【发布时间】:2019-03-08 12:06:02
【问题描述】:
var myArray = [1, 2, 3, 4, 5, 6]
function myPromise(num){
return new Promise(res => {
window.setTimeout(()=>{
res( console.log("done: " + num) )
},2000)
})
}
myPromise(myArray[0])
.then(x => myPromise(myArray[1]))
.then(x => myPromise(myArray[2]))
.then(x => myPromise(myArray[3]))
.then(x => myPromise(myArray[4]))
.then(x => myPromise(myArray[5]))
现在,如果我执行上面的语句,它将按顺序运行。在我的实际用例中,数组是动态填充的,我需要为myArray 中的每个成员执行myPromise() 函数。
如何创建一个“可暂停循环”来循环数组中的每个项目,执行 myPromise 并等待承诺得到解决,然后再继续下一次迭代?
【问题讨论】:
-
Promise.All is what you want
-
@JohnPeters 就其本身而言,这还不够,因为它不会按顺序解析。
-
最干净、最容易阅读的代码就是在 for 循环中等待它们
标签: javascript