No puedo hacer que el .delay
método funcione en jQuery:
$.delay(3000); // not working
$(queue).delay(3000); // not working
Estoy usando un ciclo while para esperar hasta que un valor de cambio incontrolado sea mayor o igual que otro y no puedo encontrar ninguna forma de detener la ejecución durante X segundos.
Respuestas:
$ .delay se usa para retrasar las animaciones en una cola, no para detener la ejecución.
En lugar de usar un ciclo while, debe llamar de forma recursiva a un método que realiza la verificación cada segundo usando
setTimeout
:fuente
setTimeout()
.También puede retrasar algunas operaciones de esta manera:
fuente
ES6 setTimeout
Editar: 204586560000 ms es el tiempo aproximado entre la pregunta original y esta respuesta ... suponiendo que calculé correctamente.
fuente
La
delay
función de jQuery está destinada a ser utilizada con efectos y colas de efectos, vea losdelay
documentos y el ejemplo en ellos:Si desea observar una variable para los cambios, puede hacer algo como
fuente
JavaScript
setTimeout
es una muy buena solución:La
delay
función en jQuery se usa principalmente para retrasar animaciones en una cola de animación jQuery.fuente
delay()
no detiene el flujo de código y luego lo vuelve a ejecutar. No hay una forma práctica de hacerlo en JavaScript. Todo tiene que hacerse con funciones que aceptan devoluciones de llamada como lassetTimeout
que otros han mencionado.El propósito de jQuery
delay()
es hacer que una cola de animación espere antes de ejecutarse. Entonces, por ejemplo$(element).delay(3000).fadeIn(250);
, el elemento se desvanecerá después de 3 segundos.fuente
Solo javascript funcionará sin jQuery
fuente
Javascript es un lenguaje de programación asíncrono, por lo que no puede detener la ejecución por un tiempo; la única forma en que puede [pseudo] detener una ejecución es usando setTimeout () que no es un retraso sino una "devolución de llamada de función retrasada".
fuente
Si está utilizando las funciones de ES6 y está en una función asíncrona, puede detener efectivamente la ejecución del código por un tiempo determinado con esta función:
Así es como lo usas:
Se detendrá la cantidad solicitada de milisegundos, pero solo si está en una función asíncrona . Ejemplo a continuación:
fuente