完成时Foreach回调

Luc*_*nto 7 javascript node.js

我想在foreach完成后执行回调,但它不能正常工作.我怎么能这样做?

var response = [];
myArray.forEach(function(data) {
    data.asyncFunction(function(result) {
         response.push(result);
    });
}, function() {
    console.log(response); // Not being called.
});

console.log(response); // (Empty) Executed before foreach finish.
Run Code Online (Sandbox Code Playgroud)

Ano*_*oop 10

因为forEach只接受一个callback.由于您在内部调用异步方法forEach,因此需要检查是否所有asyn调用都已完成

var response = [];
myArray.forEach(function(data, index) {
    data.asyncFunction(function(result) {
         response.push(result);
         if(response.length  === myArray.length) {
                 //foreach work done
         }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 如果它是真正异步的,你就不能相信当调用最后一个索引时它们都完成了.最好将myArray.length与response.length进行比较. (2认同)