使用 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
方法,進行排隊,覺得這種寫法挺有意思的,所以分享給大家,就當做一個小知識吧~
前端之神 一位前端小菜雞,寫過 100 多篇原創文章,全網有 5w + 個前端朋友,夢想是成爲” 前端之神 “~
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/O2RBPM0yq90_M2Qb9K4Z9A