Несмотря на то, что у меня нет ошибок, и я могу распечатать данные файла, input_1, похоже, не изменяется на true во всем цикле. Поэтому я не печатаю 'y', а просто бесконечную серию x. Я хочу, чтобы цикл while ожидал изменения переменной input_1, и я не хочу использовать обещания.переменная не обновляется во время цикла (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