实现promise的核心思想是借助reduce
第一步
const res = [] //定义一个接受不同promise执行结果的数组
第二步 返回一个promise对象
return new Promise((resolve,reject) => { })
第三步 通过reduce讲不同的promise进行串联执行
arr.reduce((pre,cur) => { return pre.then(cur).then(data => res.push(data)) },Promise.resolve()).then(() => resolve(res))
Promise.resolve(value)
方法返回一个以给定值解析后的 Promise
对象
完整代码
const funcArr = [ () => new Promise((resolve) => { setTimeout(() => resolve(1), 2000); }), () => new Promise((resolve) => { setTimeout(() => resolve(2), 1000); }), () => new Promise((resolve) => { setTimeout(() => resolve(3), 3000); }), ]; /** * @description: 实现Promise的串行 * @param {*}: 接收一个包含多个返回Promise对象的函数的数组 * @return {*}: 返回一个Promise对象 */ function inOrder(arr) { const res = [] return new Promise((resolve,reject) => { arr.reduce((pre,cur) => { return pre.then(cur).then(data => res.push(data)) },Promise.resolve()).then(() => resolve(res)) }) } inOrder(funcArr).then(data => console.log(data))
参考:如何控制Promise的串行执行? - 掘金 (juejin.cn)
标签:resolve,return,实现,res,Promise,串行,new,data From: https://www.cnblogs.com/alwaysrun/p/17178991.html