使用reduce进行Promise排队执行?你们学会了吗?
前言
大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心。
Promise.all
在平时的开发中,我们涉及到多个异步方法的执行的时候,就会想到一个方法Promise.all,这个方法可以将所有异步操作返回的结果,按顺序组成一个数组,返回给你
// 多个promise
const promises = [.....]
Promise.all(promises).then(res => {
console.log(res)
// [.....] 结果
})
注意:有序的结果不代表有序的执行!
排队执行
Promise.all是并发的,也就是执行的顺序是无序的,那如果我想有序的话,怎么做呢?
// 多个promise
const promises = [.....]
for(let promise of promises) {
await promise()
}
这样其实也行,但是会引起eslint的报错
利用reduce进行排队
这几天在看同事的代码时,发现了一种排队执行Promise的写法,挺有意思的,是利用了数组的reduce方法
promises.reduce(
(prev, next) => prev.then(() => next.action()),
Promise.resolve()
);
就是利用了Promise的链式then方法,进行排队,觉得这种写法挺有意思的,所以分享给大家,就当做一个小知识吧~
来源:前端之神
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!