【发布时间】:2015-05-18 06:55:13
【问题描述】:
我是 NodeJS 的新手。一个让我感到困惑的问题是并行流。我阅读了一个示例,将这个 sn-p 显示为一种控制并行流的技术:
var fs = require('fs');
var fileDir = './files';
fs.readdir(filesDir, function (err, files) {
if (err) throw err;
for (var index in files) {
var task = (function (file) {
return function () {
fs.readFile(file, function (err, text) {
if (err) throw err;
doSomething();
});
}
})(filesDir + '/' + files[index]);
tasks.push(task);
}
for (var index in tasks) {
tasks[index]();
}
});
这段代码就像一个魅力,但是当我用
替换它时 for (var index in files) {
var task = function () {
console.log(files[index]);
fs.readFile(filesDir + '/' + files[index], function (err, text) {
if (err) throw err;
doSomething();
});
};
tasks.push(task);
}
for (var index in tasks) {
tasks[index]();
}
它没有像我预期的那样工作,因为循环中的 files[index] 始终是目录中的最后一个文件。你能解释一下真正的流程是什么吗?
【问题讨论】:
标签: node.js