为什么如果你这样做:为什么fs.readFile以不同的顺序返回?
for (var i = 0; i < 5; i++) {
fs.readFile('file' + i, function(err, data) {
console.log('file: ', data);
});
}
你每次不同的结果?
我猜它与节点的“异步”事件循环有关,但不确定这是如何工作的。
为什么如果你这样做:为什么fs.readFile以不同的顺序返回?
for (var i = 0; i < 5; i++) {
fs.readFile('file' + i, function(err, data) {
console.log('file: ', data);
});
}
你每次不同的结果?
我猜它与节点的“异步”事件循环有关,但不确定这是如何工作的。
这将关闭并获取文件,每次完成时将数据返回给您的回调。你永远不会知道哪些将首先完成或订单。如果您需要等待所有5个文件,然后再查看异步库:https://www.npmjs.com/package/async。
fs.readFile('file' + i, function(err, data) {
console.log('file: ', data);
});
是的,我知道如何处理它们,只是想知道他们为什么会以不同的顺序返回,可能是在较低的水平。 – Deviljho
你可以这样做: -
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。
是的,实际上并没有寻找不同的方法,我只是想知道为什么异步过程的顺序返回无序,如果它们总是以相同的顺序调用。 – Deviljho
fs.readFile是异步的。你是在自问自答。文件可能以不同的速度读取。 –
我知道它的异步,我想知道每次有什么区别,它是随机的吗,为什么不每次都以相同的顺序返回它们?它没有提出外部请求,只是读取文件,为什么它每次都以不同的顺序读取它们,是什么让它们在读取文件时更快? 你可以阅读我选择了解我在问什么的答案;) – Deviljho