【发布时间】:2021-05-15 05:57:55
【问题描述】:
我有一个函数同时调用多个函数并等待它们全部完成。它按预期工作。它在下面标记为parallel
我有一个数组,我想用数组中每个值的参数将它映射到一个函数中。但是,正如您可能想象的那样,该函数在映射时被正确调用,因此结果不会返回到并行结果中。下面是我正在尝试做的一个示例。
关于如何执行此操作并将结果返回到并行函数的任何想法?
目前正在做
let array = [1,2,3,4,5];
r = await parallel(
doStuff(array[0]),
doStuff(array[1]),
doStuff(array[2]),
doStuff(array[3]),
doStuff(array[4]),
);
if(r.err.code) return r;
愿意做
let array = [1,2,3,4,5];
r = await parallel(array.map(v => doStuff(v)))
if(r.err.code) return r;
平行
async function waitForAll(...functions) {
return await Promise.all(functions)
}
const parallel = async (...functions) => {
const d = {err: {code:0,message:""},res:{}}; let r,sql,vars;
r = await waitForAll(...functions)
for(let i in r){ if(r[i].err.code) return r[i]; }
d.res = r;
return d;
}
module.exports = {
parallel
}
编辑:doStuff() 是异步的
【问题讨论】:
-
这
await parallel(还能用吗? -
@brk 是。随着当前的实施工作以及使用它的项目的其他领域正在工作。
标签: javascript function asynchronous async-await