Wie richte ich eine setInterval Render-Schleife, die bricht, sobald eine Bedingung erfüllt ist?js Rendern Schleife, die bricht, sobald eine Bedingung erfüllt ist
Antwort
Sie können das Intervall ID speichern und löschen es über clearInterval()
zum Beispiel
var timer = setInterval(myFunction, 1000);
function myFunction() {
if(condition) {
clearInterval(timer);
return;
}
//do stuff
}
Oder wenn Sie einfach clearInterval()
aufrufen können, wo die Bedingung eingestellt ist, so dass das nächste Intervall nicht ausgeführt wird, keine Logik dafür in der Funktion selbst.
Wenn Sie fragen, wie Sie einen Funktionsaufruf stoppen können, der mit setInterval() eingestellt wurde, verwenden Sie einfach clearInteval() function. Sie müssen zuerst einen Verweis auf die setInterval-Funktion speichern und als diese Referenz verwenden, um das Intervall zu stoppen:
var int=self.setInterval("your_function_name()",1000);
if(condition){
clearInterval(int)
}
clearInterval
stoppt die Wiederholung von setInterval
, durch setInterval
die ID zurückgegeben werden:
var interval = setInterval(function() {
// do your loop
if (loop_should_stop) {
clearInterval(interval);
}
}, dt);
Dies würde dazu führen, dass es vor dem Stoppen ein letztes Mal ausgeführt wird, der Check muss am Anfang der Funktion stehen. –
Ja. Abhängig davon, wo die Abbruchbedingung berechnet wird, könnte dies das sein, was Sie wollen. – kevingessner
Antwort Nicks perfekt funktioniert. Ich erweiterte sie durch ein Versprechen
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;
}
zurückkehren und Sie können es aufrufen wie so
checkUntil(function() {
return document.querySelector('body');
}, 500).then(function() {
...
...
});
});
- 1. Wie aus einer foreach ausbrechen, sobald eine Bedingung erfüllt ist?
- 2. Beenden eines Skripts, sobald die Bedingung erfüllt ist
- 3. PHP: Stop Implode sobald die Bedingung erfüllt ist
- 4. , die eine bestimmte Bedingung erfüllt
- 5. Bricht eine if/else-Anweisung ab, wenn die Bedingung nicht erfüllt ist
- 6. Überschreiben .data() wenn eine Bedingung erfüllt ist
- 7. Wie erhalten Sie die IDs von verschachtelten Array, sobald die Bedingung erfüllt ist?
- 8. Warum läuft meine Schleife weiter, obwohl sie die Bedingung erfüllt?
- 9. So stoppen Sie die Randomisierung, wenn eine Bedingung erfüllt ist
- 10. Eine Zeile nur aktualisieren, wenn die Bedingung erfüllt ist
- 11. Erinnere dich an die Iteration, wenn eine Bedingung erfüllt wurde
- 12. alle Kombinationen finden, die die Bedingung erfüllt?
- 13. Gespeicherte Prozedur ändern, wenn Bedingung erfüllt ist
- 14. Detect LongPress, wenn bestimmte Bedingung erfüllt ist
- 15. Ersetzen von Wort, wenn Bedingung erfüllt ist
- 16. Ausgabe der Zeichenfolge in for Schleife ändert sich abhängig davon, ob eine bestimmte Bedingung erfüllt ist
- 17. Mysql Reihenfolge Ergebnisse, wenn eine bestimmte Bedingung erfüllt ist
- 18. Do Until Loop-Bedingung erfüllt - aber Schleife wird fortgesetzt - Powershell
- 19. Verketten mehrerer CompletionStage nur, wenn eine Bedingung erfüllt ist
- 20. Nur zu einem Diktat hinzufügen, wenn eine Bedingung erfüllt ist
- 21. SQL: Aktualisieren eines Felds nur, wenn eine Bedingung erfüllt ist
- 22. Warten Sie, bis die Bedingung string.contains() erfüllt ist
- 23. Wie blockiere ich einen Vorgang, bis eine Bedingung erfüllt ist?
- 24. Weitere Daten abrufen, wenn die Bedingung ngIf erfüllt ist
- 25. Schlafen und überprüfen, bis die Bedingung erfüllt ist
- 26. Reihenfolge der Zeilen, nach denen die Bedingung erfüllt ist?
- 27. MySQL: ein Feld nur aktualisieren, wenn die Bedingung erfüllt ist
- 28. R Repeat-Funktion, bis die Bedingung erfüllt
- 29. Python Änderungswert in verschachtelten Wörterbuch, wenn die Bedingung erfüllt ist
- 30. Hinzufügen von Text zu Text, wenn die Bedingung erfüllt ist
Ja, aber ** do ** keinen String verwenden, verwenden Sie die aktuelle Funktionsreferenz. –