Promise 对象循环调用
解答:
首先定義一個可重復調用 Promise 的方法
function?retry(){
????var?promise?;
????promise?=?new?Promise(function(resolve,reject){
????????var?elapse?=?Math.random()*2000;
????????setTimeout(resolve,?elapse);
????});
????return?promise;
}
接下來對它調用10次
for?(var?i?=?0;?i?<?10;?i++){
????retry().then(function(){
????????console.log(i);
????})
}
查看輸出結果:
10
10
10
10
10
10
10
10
10
10
不是我們期望的輸出。
換一種調用方式:
var?promiseArray?=?[];
for?(var?i=0;?i<10;?i++){
????promiseArray.push(retry());
}
Promise.all(promiseArray).then(function(){
????for(i=0;?i<10;?i++){
????????console.log(i);
????}
})
輸出結果:
0
1
2
3
4
5
6
7
8
9
ok,正是我們想要的 。
因為Promise.all函數可以并行調用參數中的Promise對象方法,并且將所有Promise對象方法返回值作為數組輸入到then回調中,因此這種方式調用可以解決Promise的循環創建和調用。
總結
以上是生活随笔為你收集整理的Promise 对象循环调用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring boot配置logback
- 下一篇: Torque汽车诊断教程