重複の可能性:
非同期モジュール内で「マップ」機能を使用できません
私はこのような問題を抱えています:
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が役立つかもしれませんが、すぐにはわかりません。
おそらく、非同期プログラミングの経験が豊富な人がその方法を説明するかもしれません。