儘管我沒有得到任何錯誤並且我能夠打印文件數據,但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