0
votes

NODEJS Vérifiez si le contenu du fichier est égal à '1', sinon, répétez-vous?

Est-ce d'une manière ou d'une autre que possible de faire de la demande "attendre" jusqu'à ce que les conditions soient vraies et vérifient activement les conditions s'ils sont faux?

   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);
    }


1 commentaires

Si vous utilisez pendant , vous devez relire le fichier, il ne sera pas mis à jour automatiquement.


3 Réponses :


1
votes

Vous pouvez utiliser / doit utiliser pendant plutôt

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

console.log('this will be executed once the interpreter exits the loop')


0 commentaires

0
votes

Vous pouvez utiliser une récursion ou des boucles. Je préférerais personnellement la récursion.

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);


3 commentaires

La récursion n'est en fait pas vraiment adaptée à cet OMI, il empile des contextes de fonction, en utilisant la mémoire et pourrait se terminer à un trop de récursions assez rapidement s'il y a trop d'attente ..


Vous plaisantez j'espère? Récursion ?? Cela est même utilisé dans un tri rapide, l'algorithme de tri le plus rapide. Je pense que ce que vous souhaitez à @kaddath le dirige infiniment, et ce serait le même cas pour les boucles. Mémoire égale si elle fonctionne infiniment.


ici vous êtes : à peine 7000 tours de boucle et 0,3 seconde avant Vous obtenez une taille de pile d'appel maximale dépassée erreur. Je ne sais pas pourquoi vous mentionnez un algorithme de tri, c'est rien à voir avec attendre avant que quelque chose complète .. Vous n'obtiendrez pas cette limite avec une boucle



0
votes

Essayez ceci:

p>

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


0 commentaires