可能重复:
不能在异步模块中使用“map”函数
我有这样的问题:
var paths = ['path1', 'path2', 'path3', ...]; //Some arbitrary array of paths
var results; //I need to collect an array of results collected from these paths
results = paths.map(function(path){
var tempResult;
GetData(path, function(data){ //Third-party async I/O function which reads data from path
tempResult = data;
});
return tempResult;
});
console.log(results); //returns something like [nothing, nothing, nothing, ...]
我可以想象它为什么会发生(return tempResult
在异步函数返回任何数据之前触发 - 毕竟它很慢),但不太明白如何使它正确。
我的猜测是async.map可能会有所帮助,但我无法立即看到。
也许在异步编程方面更有经验的人可能会解释这种方式?