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); }
3 Réponses :
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')
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);
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 code> 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 code> 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
Essayez ceci:
p>
let res; while( res !== '1' ) { res = fs.readFileSync('file.txt', 'utf8'); }
Si vous utilisez
pendant code>, vous devez relire le fichier, il ne sera pas mis à jour automatiquement.