¿Cómo configuro un loop de renderizado setInterval que se rompe, una vez que se cumple una condición?js render loop que se rompe una vez que se cumple una condición
Respuesta
Usted puede almacenar el ID de intervalo y desactivarla a través clearInterval()
, por ejemplo
var timer = setInterval(myFunction, 1000);
function myFunction() {
if(condition) {
clearInterval(timer);
return;
}
//do stuff
}
O si puede simplemente llamar al clearInterval()
donde establece la condición, para que el siguiente intervalo no se ejecute, ya que no tiene lógica para esto en la función misma.
Si pregunta cómo detener una llamada de función que se ha configurado utilizando setInterval(), simplemente use clearInteval() function. Primero tiene que guardar una referencia a la función setInterval y de utilizar esta referencia para detener el intervalo:
var int=self.setInterval("your_function_name()",1000);
if(condition){
clearInterval(int)
}
clearInterval
detiene la repetición de setInterval
, utilizando el ID devuelto por setInterval
: Respuesta
var interval = setInterval(function() {
// do your loop
if (loop_should_stop) {
clearInterval(interval);
}
}, dt);
Esto daría como resultado que se ejecutara por última vez antes de detenerse, la verificación debe estar al principio de la función. –
Sí. Dependiendo de dónde se calcule la condición de ruptura, esto podría ser lo que desee. – kevingessner
de Nick funciona perfectamente. Me extendí devolviendo una promesa
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;
}
y se puede invocar al igual que
checkUntil(function() {
return document.querySelector('body');
}, 500).then(function() {
...
...
});
});
- 1. Retraso asincrónico de JS hasta que se cumpla una condición
- 2. ¿Se puede usar una restricción SQL para evitar que se cambie un valor en particular cuando se cumple una condición?
- 3. Xcode storyboard cancelar push si no se cumple una condición
- 4. ¿Cómo se "rompe" una función?
- 5. Python: crea una nueva lista de una lista cuando se cumple una determinada condición
- 6. ¿Cómo bloquear una operación hasta que se cumpla una condición?
- 7. ¿Cómo detengo todas las arañas y el motor inmediatamente después de que se cumple una condición en una tubería?
- 8. Manera pitónica de verificar si una condición se cumple para cualquier elemento de una lista
- 9. buscando elemento de la matriz numpy que cumple la condición
- 10. Escribir un NSPredicate que devuelve verdadero si no se cumple la condición
- 11. hilo de espera hasta que se haya producido una condición
- 12. repetición de solicitud de jQuery JSON hasta que la condición se cumple
- 13. Cómo detener una función de JavaScript cuando se cumple una determinada condición
- 14. Modifique el procedimiento almacenado si se cumple la condición
- 15. Cómo salir de $. Cada función cuando se cumple la condición
- 16. ¿cómo puedo evitar una descarga antes de que se active una determinada condición?
- 17. ¿Cómo impido que una página se descargue (navegue) en JS?
- 18. ¿Se calcula javascript str.length cada vez que se llama o solo una vez?
- 19. ¿Cómo hacer que un bookmarklet se ejecute solo una vez?
- 20. Funciones que se puede llamar una sola vez
- 21. Número que se produce sólo una vez en la matriz
- 22. Afirmando que un método se llama exactamente una vez
- 23. Comportamiento del miembro protegido una vez que se heredó.
- 24. AS3 - Escucha de eventos que solo se activa una vez
- 25. Haciendo que algunos códigos solo se ejecuten una vez
- 26. notificar una vez que el audio se terminó de tocar
- 27. ¿Cómo ingresar al modo de depuración cuando se cumple una condición?
- 28. Obligar a un grupo de validación a fallar si no se cumple una condición
- 29. ¿JS-regex alguna vez se verá?
- 30. Aplicación Qt simple se niega a compilar una vez que se agrega una señal/ranura
Sí, pero no ** ** utilizar una cadena, utilice la referencia de función real. –