为什么fs.readFile回调函数下面的代码在回调之前运行?

时间:2016-01-09 14:02:20

标签: node.js

fs.readFile('input.txt', function(err, data) {
  if (err) {
    return console.error(err);
  }
  console.log(data.toString());
});

console.log("Program Ended");

input.txt包含字符串"hello"

上面的代码打印:
Program Ended
hello

为什么在"program ended"之前打印"hello"? 这不是逐行执行吗?

2 个答案:

答案 0 :(得分:2)

回调函数内的代码(打印文件内容的代码)不会阻止执行。它在读取文件后异步执行。

答案 1 :(得分:0)

fs.readFile 是异步,这意味着,正如@madox2 所说,它不会阻止执行。如果你想在 fs.readFile 之后记录 Program Ended,你可以使用 fs.readFileSync。 fs.readFileSync 是同步的,意味着 console.log("Program Ended") 将在之后执行。