ChuChencheng / note

菜鸡零碎知识笔记
Creative Commons Zero v1.0 Universal
3 stars 0 forks source link

ES6 Promise #26

Open ChuChencheng opened 4 years ago

ChuChencheng commented 4 years ago

概念

异步编程的一种解决方案,最早由社区提出并实现, ES6 写进语言标准。

规范

Promises/A+

实现

见仓库 promise-implementation

主要难点在于 resolve 的如果是个 Promise ,要等这个 Promise 有结果后再处理当前 Promise ,即是一个递归的过程,获取到最后有结果的 Promise 。在规范上,就是 the Promise Resolution Procedure 这个过程。

另一个难点就是 then 方法的实现,这是 Promise 实现的核心之一,其他方法都是基于构造函数与 then 方法的扩展。

扩展

对于 Promise.all, Promise.allSettledPromise.race 这类传入多个 Promise 的方法,限制其同时进行的 Promise 并发数:

见仓库 batch-promise

总结起来就是 计数+递归

参考