节点的模块异步并不像预期的那样工作

时间:2015-02-06 20:31:53

标签: javascript node.js asynchronous foreach

我尝试使用节点模块' async'及其方法'每个',以便使用array.forEach的异步版本。问题是它没有按预期工作,因为它从不执行我将其作为第三个参数传递的回调。

以下是代码:

var async = require('async');

var arr = [1,2,3,4,5,6,7,8,9,10]; 

async.each(arr, function(element, cb){
    console.log(element);
}, function(err){
     console.log("Done");
});

事实上,我的节目从不打印"完成"即使它完成循环遍历数组。

你有什么想法吗?

2 个答案:

答案 0 :(得分:1)

那是因为你没有在第二个参数中触发回调。

var async = require('async');

var arr = [1,2,3,4,5,6,7,8,9,10];

async.each(arr, function(element, cb){
    console.log(element);
    cb(); // You were missing this
}, function(err){
     console.log("Done");
});

这导致:

1
2
3
4
5
6
7
8
9
10
Done

答案 1 :(得分:1)

您需要调用async提供的回调函数来触发结果函数,如下所示:

var async = require('async');

var arr = [1,2,3,4,5,6,7,8,9,10]; 

async.each(arr, function(element, cb){
  console.log(element);
  cb();
}, function(err){
 console.log("Done");
});

async docs中所述。