一尘不染

等待.forEach()完成的最佳方法

angularjs

有时我需要等待一种.forEach()方法完成,主要是在“加载程序”功能上。这是我这样做的方式:

$q.when(array.forEach(function(item){ 
    //iterate on something 
})).then(function(){ 
    //continue with processing 
});

我忍不住觉得这不是等待a .forEach()完成的最佳方法。做这个的最好方式是什么?


阅读 1364

收藏
2020-07-04

共1个答案

一尘不染

如果内没有 异步 代码forEachforEach则不是异步代码,例如以下代码:

array.forEach(function(item){ 
    //iterate on something 
});
alert("Foreach DONE !");

forEach完成后,您将看到警报。

否则(您内部有异步的东西),可以将forEach循环包装在Promise中

var bar = new Promise((resolve, reject) => {
    foo.forEach((value, index, array) => {
        console.log(value);
        if (index === array.length -1) resolve();
    });
});

bar.then(() => {
    console.log('All done!');
});

信用:@ rolando-benjamin-vaz-ferreira

2020-07-04