var fs = require('fs');
fs.readFile('file.txt', 'utf-8', function(err, data) {
if(err) {
console.error(err);
} else {
console.log(data);
}
});
console.log('end.');
var data2 = fs.readFileSync('file.txt', 'utf-8');
console.log(data2);
console.log('end.');
这段程序的执行结果为什么是
end.
Contents of the file.
end.
Contents of the file.
而不是下面这样的呢?
end.
Contents of the file.
Contents of the file.
end.
7 回复
不明白。 单独
var data2 = fs.readFileSync('file.txt', 'utf-8');
console.log(data2);
console.log('end.');
我知道data2
会在end.
上面,可是为什么,前面添加了异步的readFile()
变成这样
fs.readFile('file.txt', 'utf-8', function(err, data) { ... });
console.log('end.');
var data2 = fs.readFileSync('file.txt', 'utf-8');
console.log(data2);
console.log('end.');
后会对同步的readFileSync()
产生影响,让data2
跑到了end.
下面。
@Hanai 没有影响。是打印出来的语句一样,导致你看得时候有一些混淆。 你试着用下面的代码运行一下,应该就明白了。
var fs = require('fs');
fs.readFile('file.txt', 'utf-8', function(err, data) {
if(err) {
console.error(err);
} else {
console.log("readFile");
}
});
console.log('end. of readFile');
var data2 = fs.readFileSync('file.txt', 'utf-8');
console.log("readFileSync");
console.log('end. of readFileSync');