Open lbwa opened 5 years ago
实现 Promise 的顺序实例化,即仅当前一个 Promise 实例化状态 resolved 之后才开始调用下一个 Promise 实例化。此举不同于 Promise.all 和 [].map() 中的并发实例化 Promise。
Promise
resolved
Promise.all
[].map()
/** * * @param {promise[]} funcs 待实例化数组 */ const promiseSerial = funcs => funcs.reduce((promise, func) => // 待上一次 promise 的状态 resolved 之后,调用下一个 promise,即 func // 并将运行 func 得到的结果与之前的 promise 返回的结果合并 promise .then(result => func().then(Array.prototype.concat.bind(result))) .catch(console.error), // 初始值为一个空数组容器 Promise.resolve([]) )
实现
Promise
的顺序实例化,即仅当前一个Promise
实例化状态resolved
之后才开始调用下一个Promise
实例化。此举不同于Promise.all
和[].map()
中的并发实例化Promise
。Reference