使用reduce进行Promise排队执行?你们学会了吗?

摘要:在平时的开发中,我们涉及到多个异步方法的执行的时候,就会想到一个方法Promise.all,这个方法可以将所有异步操作返回的结果,按顺序组成一个数组,返回给你

前言

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心。


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方法,进行排队,觉得这种写法挺有意思的,所以分享给大家,就当做一个小知识吧~

来源:前端之神

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_11810