Comment mettre en place une boucle de rendu setInterval qui casse, une fois qu'une condition est remplie?js rend la boucle qui se casse une fois qu'une condition est remplie
Répondre
Vous pouvez stocker l'ID d'intervalle et effacer via clearInterval()
, par exemple
var timer = setInterval(myFunction, 1000);
function myFunction() {
if(condition) {
clearInterval(timer);
return;
}
//do stuff
}
Ou si vous pouvez simplement appeler clearInterval()
où le réglage de la condition, de sorte que l'intervalle suivant ne fonctionne pas, n'ayant aucune logique pour cela dans la fonction elle-même.
Si vous demandez comment arrêter un appel de fonction qui a été défini à l'aide de setInterval(), utilisez simplement clearInteval() function. Vous devez d'abord enregistrer une référence à la fonction setInterval et que d'utiliser cette référence pour arrêter l'intervalle:
var int=self.setInterval("your_function_name()",1000);
if(condition){
clearInterval(int)
}
clearInterval
arrête la répétition de setInterval
, en utilisant l'ID retourné par setInterval
:
var interval = setInterval(function() {
// do your loop
if (loop_should_stop) {
clearInterval(interval);
}
}, dt);
Cela le ferait fonctionner une dernière fois avant de s'arrêter, la vérification doit être au début de la fonction. –
Oui. Selon l'endroit où la condition de rupture est calculée, cela peut être ce que vous voulez. – kevingessner
réponse de Nick fonctionne parfaitement. Je tendis en retournant une promesse
function checkUntil(conditionFunc, millisecondsInterval) {
var retryCount = 0;
var retryCountLimit = 100;
var promise = new Promise((resolve, reject) => {
var timer = setInterval(function() {
if (conditionFunc()) {
clearInterval(timer);
resolve();
return;
}
retryCount++;
if (retryCount >= retryCountLimit) {
clearInterval(timer);
reject("retry count exceeded");
}
}, millisecondsInterval);
});
return promise;
}
et vous pouvez l'appeler comme si
checkUntil(function() {
return document.querySelector('body');
}, 500).then(function() {
...
...
});
});
- 1. Soumettre uniquement si une condition est remplie?
- 2. Array.BinarySearch où une certaine condition est remplie
- 3. Écrasez .data() si une condition est remplie
- 4. La boucle ne se casse pas
- 5. Comment quitter la fonction $ .each lorsque la condition est remplie
- 6. Exécuter macro VBA lorsque la condition est remplie
- 7. Apparition d'un lien si une condition est remplie
- 8. Rails: lien Facebox si la condition est remplie
- 9. jquery suspendre une boucle jusqu'à ce que la condition globale soit remplie
- 10. Comment arrêter une fonction JavaScript lorsqu'une certaine condition est remplie
- 11. comment ajouter une condition js
- 12. Set propriété Wix que si certaine condition est remplie
- 13. Pourquoi cette boucle PHP rend-elle chaque ligne deux fois?
- 14. Abandon de ViewGroup si une condition n'est pas remplie?
- 15. Insertion MySQL si la condition est remplie dans une autre table
- 16. Configurer Crystal Reports 11 pour exécuter le rapport lorsque la condition est remplie?
- 17. PHP déclenche un email automatiquement quand une certaine condition est remplie
- 18. PHP boucle faire une fois la boucle comme terminée
- 19. est-il possible de supprimer automatiquement une ligne dans une table si une certaine condition est remplie?
- 20. JS provoquant une boucle infinie dans Firefox
- 21. Comment est-ce que je casse une boucle externe d'une boucle intérieure en Perl?
- 22. supprimer les lignes après fgets() si la condition est remplie dans php
- 23. CSS - js rend les liens inutiles
- 24. boucle php: répéter une fois
- 25. Qu'est-ce qui rend une table "lente?"
- 26. VS2010 rend les contrôles JS maladroitement
- 27. Créer une boucle de curseur JS
- 28. ce qui est erroné avec ce JS
- 29. pour la boucle/si la condition dans le script shell
- 30. boucle Wordpress> boucle unique, rend légèrement résultats erronés
Oui, mais ** ne ** utiliser une chaîne, utilisez la référence de fonction réelle. –