尽管我没有得到任何错误并且我能够打印文件数据,但input_1在整个循环中似乎没有更改为true。因此,我不打印'y',只是无尽的一系列x。我希望while循环等到input_1变量发生变化,我不想使用promise。变量在while循环中没有更新(nodejs)
var fs = require("fs");
var input_1 = false;
var input_2 = false;
fs.readFile('input.txt', function(err, data){
if (err) {return console.log(err);};
console.log(data.toString());
input_1 = true;
})
fs.readFile('input2.txt', function(err, data){
if (err) {return console.log(err);};
console.log(data.toString());
input_2 = true;
})
while(!input_1){
console.log('x')
}
console.log('y')
JavaScript是单线程的。如果你做了一个无限循环,没有别的事情会发生。 – 4castle
readFile是一个异步函数。您需要更改代码以支持这一事实,或者更改为readFileSync –
这个想法是,两个读取文件操作保持异步,并且当成功读取第一个文件时,input_1的值将更改为true。当它发生时,while循环应该退出。为什么不这样做?如果我执行setTimeout而不是while循环并检查input_1的值,它将更新为true。 – user3308138