【发布时间】:2015-11-04 04:54:41
【问题描述】:
在下面的 nodejs 程序中,input.txt 中只有一个字符串“abc”。
var fs = require("fs");
// Asynchronous read
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("Asynchronous read: " + data.toString());
});
// Synchronous read
var data = fs.readFileSync('input.txt');
console.log("Synchronous read: " + data.toString());
console.log("Program Ended");
输出是
Synchronous read: abc
Program Ended
Asynchronous read: abc
现在的问题是,当程序开始执行时,它首先看到异步读取文件调用并在后台运行“读取 input.txt”的过程,然后服务器看到同步读取调用并再次开始读取输入.txt。但是由于异步调用首先开始读取,当同步函数完成读取.txt时,异步函数的回调将被传递到事件循环并应该首先执行..
所以第一行输出应该是
Asynchronous read: abc
我哪里错了?
【问题讨论】:
标签: node.js asynchronous synchronous