Javascript 使用forEach获取异步匿名函数的所有结果 异步函数乘法(任务){ 返回任务*2 } var-arr=[1,2,3,4]; var-res=[]; arr.forEach(异步任务=>{ res.push(等待乘法(任务)) }); console.log(res) 输出 预期
我想等到所有的项目都乘以2,然后得到一个数组的结果Javascript 使用forEach获取异步匿名函数的所有结果 异步函数乘法(任务){ 返回任务*2 } var-arr=[1,2,3,4]; var-res=[]; arr.forEach(异步任务=>{ res.push(等待乘法(任务)) }); console.log(res) 输出 预期,javascript,node.js,typescript,ecmascript-6,async-await,Javascript,Node.js,Typescript,Ecmascript 6,Async Await,我想等到所有的项目都乘以2,然后得到一个数组的结果 注意:乘法是一个异步函数,因此有必要在forEach内部编写异步任务。我不能更改乘法。不要使用forEach。使用.map创建承诺数组,并使用Promise.all解析所有承诺: const result = await Promise.all(arr.map(multiply)); forEach不知道异步函数,所以不能让它“等待”回调函数中发生的异步内容。希望这会有所帮助,而不是使用forEach使用map和Promise。所有函数
注意:
乘法
是一个异步函数,因此有必要在forEach内部编写异步任务
。我不能更改乘法。不要使用forEach
。使用.map
创建承诺数组,并使用Promise.all
解析所有承诺:
const result = await Promise.all(arr.map(multiply));
forEach
不知道异步函数,所以不能让它“等待”回调函数中发生的异步内容。希望这会有所帮助,而不是使用forEach
使用map
和Promise。所有函数
var-arr=[1,2,3,4];
//创建一系列承诺
var result=arr.map(异步任务=>{
返回等待乘法(任务);
});
//使用Promise.all返回解析为输入承诺结果数组的承诺
然后((res)=>console.log(“我的结果”,res));
异步函数乘法(任务){
返回任务*2
}
我希望您的实际问题涉及到乘法
中真正异步的内容,否则您只会给同步问题增加开销。-这不允许您“多线程”。正如Aku所说,forEach
的async
回调永远不会做您认为它会做的事情
[2,4,6,8]
const result = await Promise.all(arr.map(multiply));