Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点';s模块异步不';I don’我没有按预期工作_Javascript_Node.js_Asynchronous_Foreach - Fatal编程技术网

Javascript 节点';s模块异步不';I don’我没有按预期工作

Javascript 节点';s模块异步不';I don’我没有按预期工作,javascript,node.js,asynchronous,foreach,Javascript,Node.js,Asynchronous,Foreach,为了使用array.forEach的异步版本,我尝试使用节点的模块async及其方法each。问题是它没有按预期工作,因为它从未执行回调,我将其作为第三个参数传递 代码如下: 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

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

代码如下:

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");
});
事实上,我的程序永远不会打印“完成”,即使它完成了在数组中的循环


你知道吗?

那是因为你没有在第二个参数中启动回调

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");
});

如中所述。

感谢您的快速回答。但那次回调有什么意义呢?只是一个实现问题?由于javascript的异步特性,您必须向前传递控制流。