エラーは発生せず、ファイルデータを印刷できますが、input_1はループ全体でtrueに変更されていないようです。したがって、私はxの無限の一連の「y」を印刷しません。 whileループはinput_1変数が変更されるまで待つ必要があり、私は約束を使用したくありません。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に変更する必要があります。 –
2つの読み込みファイル操作が非同期のままで、最初のファイルが正常に読み込まれると、input_1の値がtrueに変わります。実行されると、whileループが終了するはずです。それはなぜそうしていないのですか? whileループではなくsetTimeoutを実行してinput_1の値をチェックすると、trueに更新されます。 – user3308138