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.