promise 整理

153 阅读2分钟
单词
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