我有2個代碼片段(並行,順序)執行一個簡單的異步功能與減少數組。我不明白,爲什麼直到我打電話給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和摩卡有關,而不是JavaScript。 – ucipass