为什么这样做:
for (var i = 0; i < 5; i++) {
fs.readFile('file' + i, function(err, data) {
console.log('file: ', data);
});
}
每次都会得到不同的结果?
我猜这与节点&#34; async&#34;有关。事件循环,但不确定这是如何工作的。
答案 0 :(得分:1)
异步fs
方法利用libuv的线程池,并且操作系统可以不同地对这些线程的执行进行排序/调度(特别是取决于操作系统使用的调度程序的类型)。
答案 1 :(得分:0)
这将关闭并获取文件,并在每次完成时将数据返回到回调。您永远不会知道哪些将首先完成或订单。如果您需要等待所有5个文件,请先查看异步库:https://www.npmjs.com/package/async。
fs.readFile('file' + i, function(err, data) {
console.log('file: ', data);
});
答案 2 :(得分:0)
你可以这样做: -
for (var i = 0; i < 5; i++) {
// put the statement in try-catch in case some of the files do not exists or
// you get some other error
try {
// to show actual contents of the file instead of a buffer
console.log(fs.readFileSync('file' + i).toString());
} catch (error) {
console.error(error);
}
}
我建议不要使用此功能,但如果必须,那么这就是其中之一。你应该按照@ jordan-s的建议检查async.js http://caolan.github.io/async/docs.html#map。