使用 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 函数时注意到了同样的事情。
有没有办法解决?如果你需要运行一堆类似的函数,但它们里面有不同的数字(例如,当索引一个数组时)并且你需要它们一个接一个地运行而不是异步运行呢?如何实现?