prmise
1 promise 程序执行的特点
- 1: new Promise中的回调函数是同步执行的
- 2: 原型方法的回调函数,都是异步执行的, 属于异步消息队列中的微任务.
- 例:then catch …
- 3:因为then具有链式调用的特点。所以只要确定 then ,就可以一直执行, 但并没有提高太大的代码可读性。
2 promise有三种状态
- pending(等待态)
- resolve / fulfilled 已接收
- reject 已拒绝
3 peomise api 分类
-
原型api p.api() === Promise.prototype.api()
-
静态pai Promise.api()
- 静态方法:只能同构Promise构造函数使用
-
所有的api执行后返回值都是 新的promise实例, 只要是 promise实例就可以使用 p.api 去触发原型方法
3.1 原型方法
分类
- then 监听primise实例状态的变更, 主要监听变为已接收
- catch 监听promis实例 已拒绝的状态
- finally 监听链式调用中最后的一个状态
.then Callback
- 1: 触发条件 当prmise状态变为 fulfilled / resolve
- 2: 形参来源 resolve函数实参 或者 上一个 then return
3.2 静态方法
-
Promise.all()
- 参数:数组;数组中的每个元素均是 promise 实例
- 返回:新的prmise
- 作用:同时监听多个promise实例的状态变更,当所有promise都变为 reject 时 执行all-then-callback,当有一个拒绝执行时catch-callback
- 应用场景:经常用于处理并发业务.例如,同时发送多个请求,等所有请求成功后,在处理.
- 注意:Promise.all 捕获 reject 不是绝对的.如果Promise.all 内 单个prmise先自己捕获了catch, 那么Promise.all 不会捕获catch
-
Promise.all()的 .thenCallback
- 1:触发条件 所有promise都变为 resolve
- 2:形参 数组, 数组元素 resolve 实参.
-
Promise.race()
- 作用:监听多个promise实例状态
- 状况:当第一个promise实例状态发生变更时,若是 fullid(已接收),执行 race-then-callback;若是 reject(已拒绝)执行race-catch-callback
-
Prmise.any()
- 作用:监听多个promise实例的状态,
- 状况:当多个promise实例中只要有一个状态变为
fulfilled
(已接收) 执行 any-then-callback ;若promise实例全部状态均是reject则执行 any-catch-callback
-
Promise.resolve()
- 作用:相当于在 new Promise中执行 resolve
-
Promise.reject()
- 作用:相当于在 new Promise 执行 reject