节点的异步模块没有按预期工作
Node's module async doesn't work as expected
我正在尝试使用节点模块 'async' 及其方法 'each',以便使用 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");
});
事实上,我的程序从不打印 "Done",即使它完成了对数组的循环。
你有什么想法吗?
那是因为您没有在第二个参数中触发回调。
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
需要调用async提供的回调函数来触发result函数,像这样:
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 中所述。
我正在尝试使用节点模块 'async' 及其方法 'each',以便使用 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");
});
事实上,我的程序从不打印 "Done",即使它完成了对数组的循环。
你有什么想法吗?
那是因为您没有在第二个参数中触发回调。
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
需要调用async提供的回调函数来触发result函数,像这样:
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 中所述。