我在这里看到了很多答案,但我希望这个解决方案仍然可以帮助某人。
为每个回调创建一个承诺,如下所示:
function funcToLoop(arg){
return new Promise((resolve, reject) => {
try{
funcWithCallback(arg, (cbArg) => {
// do your stuff
resolve(cbArg)
});
} catch (e) {
reject(e)
}
});
}
然后,您可以创建一个循环作为异步函数并在此处处理最终结果/状态/等:
async function mainLoop(array){
let results = [];
for (let arg of array){
results.push(await funcToLoop(arg))
}
// handle results
}
...或者你可以有一个同步功能,收集承诺并处理它们:
function mainLoop(array){
let promises = [];
for (let arg of array){
promises.push(funcToLoop(arg))
}
Promise.all(promises).then(()=>{
// handle promises
})
}
克劳迪奥