单词
pending 进行中
fulfilled 已成功
rejected 已失败
redolved 决定
then 然后
catch 捕获
finally 最后
作用:避免层层回调,形成回调地狱
promise
一, 处理异步编程的一种方案。
1,是一个容器,里面存储着某个未来才会结束的事件。promise是一个对象。
二,两个特点
1,对象状态不受外界影响 :三种状态
pending 进行中
fulfilled 已成功
rejected 已失败
只有在异步操作结束之后,才能决定当前是哪一种状态,任何操作都无法改变这个状态
2,一旦状态改变,就不会再变了,
pending =>fulfilled
pending=> rejected
三,使用方法:
1,promise对象是一个构造函数,
promise 构造函数接受 一个函数作为参数,
函数的两个参数分别是resolve 和reject 这两个参数是函数,
resolve
作用:在异步操作成功的时候掉调用,然后将异步操作的结果作为参数传递出去,
reject
作用:在异步操作失败的时候掉调用,然后将异步操作的报错,作为参数传递出去
实例生成之后,可使用then 方法分别制定resolved状态和rejected 状态的回调函数
新建promise 就会立即执行
四,then
作用 :promise 实例添加状态改变时的回调函数 ;这里返回的新的promise 的实例
1,then return 的结果会作为参数传入第二个 then
五,catch
作用:错误捕获
建议在then 方法里面多使用catch方法捕获错误,而不是使用第二参数
原因是:使用catch 方法可以捕获前面then 执行中的错误 也更加接近同步的try /catch
在promise 的最后总是要加上一个catch 来捕获错误
六:finally
作用: 不管最有的状态如何都会执行的方法
finally 不接受任何参数 ,这标识finally 的操作与状态无关 ,不依赖promise的执行结果
七,all
作用:合并promise 返回一个新的promise
all 接受参数的格式是一个数组 ,所有的参数必须要是promise 的实例,
这里的状态分为两种
1,所有的promise实例状态 都是fulfilled ,才会编程fulfilled ,此时,所有参数实例的返回值 组成一个array 传递给 callback
2,只要有一个状态是rejected ,状态就会变成rejected 此时第一个reject的实例的返回值会传递callback
八,race
作用是 将多个promise 实例合并,不同是,只要有一个变,状态就变
九,resolve
作用:将现有对象转欢成 promise对象
十,reject
作用: 返回一个新的promise 实例 ,该实例状态为rejected