5.使用Promise实现串行
实现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))
希望有用

浙公网安备 33010602011771号