III Promise

Promises/A+ 规范解读

状态

  • Promise3个状态:pending fulfilled rejected

  • 状态可由pending 转为fulfilledrejected,不可逆转且改变后不可再更改;

then

  1. then接收两个回调onFulfilled, onRejected

  1. then内部接收异步处理;

  1. then的链式调用

    • .then的返回结果仍为Promise

    • then回调函数参数返回结果如果是Promise则直接返回,否则返回被格式化为Promise的结果

catch

  1. .then的语法糖;

  2. 相当于.then(undefined, onRejected)

all

  1. 接收一个可迭代对象;

  2. 所有Promise成功才成功;

  3. 第一个错误出现后直接reject

race

  1. 同样接收可迭代对象;

  2. 任意一个成功即返回成功;

  3. 任意一个失败即返回失败;

allSettled

  1. 接收可迭代对象;

  2. 不论失败/成功,直到所有promise执行完后再返回结果数组;

  3. 返回的数组status存储promise执行状态,value存储成功结果,reason存储失败原因;

  4. 不论是否全部成功/失败,返回的Promise状态都是fulfilled

any

  1. 接收可迭代对象;

  2. 任意一个成功即为成功;

  3. 全部失败则为失败;

Async/Await

generator的语法糖。

利用 generator/yield表达式实现async/await

思路:

  1. 利用HOCgenerator函数进行封装处理;

  2. 自动执行传入的generator函数;

  3. 返回Promise结果;

CDIK

最后更新于

这有帮助吗?