Je ne parviens pas à faire fonctionner la .delay
méthode dans jQuery:
$.delay(3000); // not working
$(queue).delay(3000); // not working
J'utilise une boucle while pour attendre qu'une valeur changeante incontrôlée soit supérieure ou égale à une autre et je ne trouve aucun moyen de hault l'exécution pendant X secondes.
Réponses:
$ .delay est utilisé pour retarder les animations dans une file d'attente, pas pour arrêter l'exécution.
Au lieu d'utiliser une boucle while, vous devez appeler de manière récursive une méthode qui effectue la vérification toutes les secondes en utilisant
setTimeout
:la source
setTimeout()
.Vous pouvez également simplement retarder certaines opérations de cette façon:
la source
ES6 setTimeout
Edit: 204586560000 ms est le temps approximatif entre la question d'origine et cette réponse ... en supposant que j'ai calculé correctement.
la source
La
delay
fonction de jQuery est destinée à être utilisée avec des effets et des files d'attente d'effets, voir ladelay
documentation et l'exemple qui s'y trouve:Si vous souhaitez observer une variable pour les changements, vous pouvez faire quelque chose comme
la source
JavaScript
setTimeout
est une très bonne solution:La
delay
fonction de jQuery est principalement utilisée pour retarder les animations dans une file d'attente d'animation jQuery.la source
delay()
n'interrompt pas le flux de code puis le réexécute. Il n'y a aucun moyen pratique de le faire en JavaScript. Tout doit être fait avec des fonctions qui acceptent des rappels comme ceuxsetTimeout
que d'autres ont mentionnés.Le but de jQuery
delay()
est de faire attendre une file d'attente d'animation avant de s'exécuter. Ainsi, par exemple$(element).delay(3000).fadeIn(250);
, l'élément disparaîtra après 3 secondes.la source
Seulement javascript Cela fonctionnera sans jQuery
la source
Javascript est un langage de programmation asynchrone donc vous ne pouvez pas arrêter l'exécution pendant un certain temps; la seule façon de [pseudo] arrêter une exécution est d'utiliser setTimeout () qui n'est pas un délai mais un "rappel de fonction retardé".
la source
Si vous utilisez les fonctionnalités ES6 et que vous êtes dans une fonction asynchrone, vous pouvez effectivement arrêter l'exécution du code pendant un certain temps avec cette fonction:
Voici comment vous l'utilisez:
Il bloquera pendant la quantité demandée de millisecondes, mais uniquement si vous êtes dans une fonction asynchrone . Exemple ci-dessous:
la source