我有一些异步代码当前正在被一条一条地执行。我知道有一种方法可以并行执行此操作,但无法找到要执行的语法。这就是目前的情况
async function someAsyncFunc(i) {
await wait(i);
return i;
}
async function wait(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
function doSomething() {
const arr = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000];
arr.forEach(item => {
someAsyncFunc(item)
.then(res => {
console.log(res);
})
});
console.log("finished");
}
doSomething();
任何帮助将不胜感激。
最佳答案
您非常接近您正在寻找的东西。您需要使用 Promise.all
并在其中使用 map。
顺便说一句,使用 forEach
的当前版本不正确,因为 Promise 不重视 forEach
。您应该使用for...of
async function someAsyncFunc(i) {
await wait(i);
return i;
}
async function wait(ms) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
function doSomething() {
const arr = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000];
Promise.all(arr.map(item => {
return someAsyncFunc(item);
}))
.then(res => {
console.log(res);
});
}
doSomething();
关于javascript - 等待函数未并行发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60026713/