Async Libeary for Node.jsを使用して、for ループで変数を参照しようとしても機能しません。
例えば:
var functionArray = []
, x;
for(x = 0; x < 5; x++) {
functionArray.push(function (callback) {
console.log(x);
callback();
});
}
async.series(functionArray, function (err, results) {
console.log("Finished");
});
出力は次のとおりです。
5
5
5
5
5
これは Async ライブラリに固有のようです。ライブラリなしで関数を実行すると、次のようになります。
for(x = 0; x < 5; x++) {
functionArray[x](function () {});
}
出力は次のとおりです。
0
1
2
3
4
async.parallel 関数を使用すると、同じことに気付きました。
これを回避する方法はありますか?内部の番号が異なるだけの同様の関数を多数実行する必要があり (たとえば、配列のインデックスを作成する場合)、それらを非同期ではなく次々に実行する必要がある場合はどうすればよいでしょうか? これはどのように達成できますか?