Si j'ai une fonction pour laquelle mon code js doit être exécuté immédiatement, mais après l'exécution, attendez 2 secondes. Comment réaliser cette logique?
( Remarque: Il s'agit simplement de la logique inverse de la comparaison avec setTimeout()
, puisque setTimeout(
) commence par attendre un certain temps, puis exécutez la fonction.
Il suffit de placer votre code dans une fonction anonyme passée à setTimeout.
par exemple.
functionToRunFirst();
setTimeout(function() {
// rest of code here
}, 2000);
Je pense que ce que vous recherchez est une méthode pour suspendre l'exécution du code jusqu'à l'expiration du délai. De nombreux programmeurs amateurs souhaitent une telle construction, mais celle-ci n'existe pas en JavaScript. Ce n'est pas nécessaire. setTimeout
et setInterval
sont des solutions idéales pour tous les besoins en JavaScript.
Cependant, JavaScript est un langage puissant. Vous pouvez construire votre propre construction pour résoudre ce problème. Jetez un coup d'oeil à blog post de Neil Mix . Avec son approche, vous pouvez créer une fonction de veille qui peut être utilisée dans les directions suivantes (notez que seul Firefox prend actuellement en charge JavaScript 1.7):
function mainGeneratorFunction() {
functionToRunFirst();
yield sleep(2000);
//rest of the code
}
Cependant, pour les autres navigateurs, ne désespérez pas. Vous pouvez utiliser un hack appelé XHR Sleeping
. Dans cette approche, vous utilisez simplement une variable XMLHttpRequest
synchrone pour appeler un script côté serveur tel que php, qui se met ensuite en veille pendant l'heure spécifiée et revient après son réveil. Le code JavaScript est le suivant:
function sleep(microseconds) {
var request = new XMLHttpRequest();
request.open("GET", "sleep.php?time=" + microseconds, false);
request.send();
}
functionToRunFirst();
sleep(2000000);
//rest of the code
La fonction de sommeil php est la suivante:
<?php
usleep($_GET["time"]);
?>
utiliser setTimeout
est une façon de le faire
function run() {
// run this code
setTimeout(afterTwoSeconds, 2000);
}
function afterTwoSeconds() {
// run this code two seconds after executing run.
}
// call run
run();
compte tenu de remplir de votre part, cela devrait courir 5 fois avec une demi-seconde minuterie
var counter = 0;
var arrayOfPicture = []; //fill this out
function gifSimulator() {
//use the counter as an index in the array, and change the image source of your element with that.
if (counter < 5) {
setTimeout(function () {
counter++;
gifSimlulator();
}, 500); //lets wait half a second
}
}
que signifie "attendre 2 secondes"? voulez-vous dire que vous voulez bloquer un retour de la fonction pendant 2 secondes?
si c'est le cas, vous ne pouvez pas faire cela. il n'y a pas de fonction sleep () en JavaScript.
vous devrez simplement utiliser setTimeout ()
Rien de mal avec les réponses ci-dessus, mais une autre façon est:
$("#somethingThatDoesntExist").fadeTo(2000, 1, function() { // two seconds later });
Je ne sais pas pourquoi vous y allez beaucoup. Je crois que nous pouvons le faire en utilisant l'objet Date. Prenez d'abord la valeur de la date et utilisez la fonction setInterval pour attendre que nous obtenions l'intervalle spécifié (obtenez une nouvelle date et vérifiez la différence). Une fois que nous obtenons cette réinitialisation, la fonction intervalle et procédons avec votre code une fois que vous pouvez l'exécuter.