nodejs проверить, равно ли содержимое файла «1», если нет, повторить? - PullRequest
0 голосов
/ 03 августа 2020

возможно ли каким-то образом заставить приложение «ждать», пока условия не станут истинными, и активно повторно проверять условия, если они ложны?

   try {
        var test123= fs.readFileSync('file.txt', 'utf8');
        console.log(test123);    
        if (test123== '1')
        {
            console.log('test123== 1');
        //Tried return; here? Does not work
//also tried while (test123=='1') {}. also hanging out and just waiting even that i changed file.txt content to "0"
        }
    } catch(e) {
        console.log('Error:', e.stack);
    }

Ответы [ 3 ]

1 голос
/ 03 августа 2020

вы можете / должны использовать вместо

var contents
while( contents !== '1' ) {
  contents = fs.readFileSync('file.txt', 'utf8');
}

console.log('this will be executed once the interpreter exits the loop')
0 голосов
/ 03 августа 2020

Попробуйте следующее:

let res;
while( res !== '1' ) {
  res = fs.readFileSync('file.txt', 'utf8');
}
0 голосов
/ 03 августа 2020

Вы можете использовать рекурсию или циклы. Я лично предпочел бы рекурсию.

function recrsiveCheck(fileName, flag) {
  try {
    var test123 = fs.readFileSync(fileName, 'utf-8');
    console.log(test123);
    if(test123 == '1') {
      console.log('test123 == 1');
    } else {
      console.log('test123 != 1');
    }
    flag -= 1;  // You can remove this flag check if you want it to check infinitely, similar to flag you can put other conditions to continue or stopping your checking.
    if(flag > 0) {
      recursiveCheck(fileName, flag);
    }
  } catch(e) {
    console.log('Error:', e.stack);
  }
}
recursiveCheck('file.txt', 10);

Это будет выполняться 10 раз.

...