Open ChuChencheng opened 4 years ago
异步编程的一种解决方案,最早由社区提出并实现, ES6 写进语言标准。
Promises/A+
见仓库 promise-implementation
主要难点在于 resolve 的如果是个 Promise ,要等这个 Promise 有结果后再处理当前 Promise ,即是一个递归的过程,获取到最后有结果的 Promise 。在规范上,就是 the Promise Resolution Procedure 这个过程。
the Promise Resolution Procedure
另一个难点就是 then 方法的实现,这是 Promise 实现的核心之一,其他方法都是基于构造函数与 then 方法的扩展。
then
对于 Promise.all, Promise.allSettled 与 Promise.race 这类传入多个 Promise 的方法,限制其同时进行的 Promise 并发数:
Promise.all
Promise.allSettled
Promise.race
见仓库 batch-promise
总结起来就是 计数+递归
概念
异步编程的一种解决方案,最早由社区提出并实现, ES6 写进语言标准。
规范
Promises/A+
实现
见仓库 promise-implementation
主要难点在于 resolve 的如果是个 Promise ,要等这个 Promise 有结果后再处理当前 Promise ,即是一个递归的过程,获取到最后有结果的 Promise 。在规范上,就是
the Promise Resolution Procedure
这个过程。另一个难点就是
then
方法的实现,这是 Promise 实现的核心之一,其他方法都是基于构造函数与then
方法的扩展。扩展
对于
Promise.all
,Promise.allSettled
与Promise.race
这类传入多个 Promise 的方法,限制其同时进行的 Promise 并发数:见仓库 batch-promise
总结起来就是 计数+递归
参考