日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

promise实现多个请求并行串行执行

發布時間:2023/11/27 生活经验 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 promise实现多个请求并行串行执行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

早上查資料,偶然發現這個話題,發現自己并不會,于是乎,下來研究了一下。

想想之前我們用jquery寫請求的時候,要實現請求的串行執行,我們可能是這么做的。

$.ajax({url: '',data: '',success: function (data) {$.ajax({url: '',data: '',success: function (data) {$.ajax({// 如此一層嵌套一層})}}) }
})

回掉嵌套的這么深,看起來很痛苦啊,于是乎我們的promise出現啦,完美的解決我們的回掉地獄~

使用promise實現==串行==很簡單,調用promise.all()方法就好

那如何比較優雅的實現幾個操作的==串行==吶?

在promise中返回一個promise對象就是一個串行。
下面我們來簡單實現一個。


下面/*** 創建promise* @param {Number} value */
function makePromise (value) {return new Promise((resolve) => {setTimeout(() => {resolve(value);}, Math.random() * 1000)})
}
/*** 打印結果* @param {Number} value */
function print (value) {return value
}let promises = [1, 3, 4, 5, 6].map((item, index) => {return makePromise(item)
});// 并行執行
Promise.all(promises)
.then(() => {console.log('done')
})
.catch(() => {console.log('error')
})// 串行執行
let parallelPromises = promises.reduce((total, currentValue) => total.then(() => currentValue.then(print)),Promise.resolve()
)parallelPromises
.then(() => {// console.log('done')
})
.catch(() => {console.log('done')
})// 順帶復習一下reduce方法reduce((total, currentValue, currentIndex, arr) => {}, initialValue)
let arr1 = [1, 2, 3, 4, 5]
let res = arr1.reduce((total, currentValue, currentIndex, arr) => {return total + currentValue
});

轉載于:https://www.cnblogs.com/running1/p/9023427.html

總結

以上是生活随笔為你收集整理的promise实现多个请求并行串行执行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。