【发布时间】:2017-09-10 20:32:23
【问题描述】:
我有 2 个代码 sn-ps (Parallel,Sequential) 在一个带有 reduce 的数组上执行一个简单的异步函数。我不明白,为什么直到我调用 Promise.all 才开始执行。这是最好的方法吗?
// Function returning promise with root value
async function proot(x) {
return new Promise((res,rej)=>{
setTimeout( () => {
console.log(x*x);
res(x*x)
},1000)
})
}
// Parallel Execution
var arr1 = [2,3,4].reduce((prev,next)=>{
return prev.concat(proot(next))
},[])
arr1 = await Promise.all(arr1)
// Sequential Execution
var arr2 = [2,3,4].reduce( async (prev,next)=>{
return (await prev).concat(await proot(next))
},Promise.resolve([]))
arr2 = await Promise.all([arr2])
【问题讨论】:
-
只是想补充一点,当我不使用调试时,第二次顺序执行将在不调用 Promise.all() 的情况下工作。也许这与我的 IDE 和 mocha 而不是 javascript 有关。
标签: javascript arrays promise async-await reduce