6
votes

Y a-t-il une fonction équivalente JavaScript ou JQuery Sleeping?

Je veux quelque chose comme ceci en JavaScript. XXX

Y a-t-il un javascript intégré ou jQuery pour cela?

Merci! >


8 Réponses :


5
votes

3 commentaires

Seulement que le Settimeout a besoin d'une fonction de continuation comme argument.


J'ai essayé d'utiliser Settimeout, mais je n'ai pas besoin d'une fonction de continuation.


La continuation est obligatoire si vous voulez un comportement de PHP. Settimeout (Runthisfuncunc (), After1Sec) - Contrairement à PHP, JS n'attend pas qu'une ligne soit complètement terminée jusqu'à ce que le prochain soit exécuté.



5
votes

Il n'y a rien de tel, directement. Vous devriez dire à JavaScript pour réveiller "quelque chose" après un certain temps en utilisant Settimeout .

Ce "quelque chose" serait le code que vous envisagez d'exécuter après le Dormir, bien sûr.

d'un exemple que j'ai trouvé sur Internet : xxx

mais c'est une conception fragile. Vous feriez mieux de repenser votre logique commerciale à vraiment faire quelque chose après une seconde: appelez une fonction différente au lieu d'utiliser ces variables d'assistance intégrées.


0 commentaires

2
votes

première question, pourquoi voulez-vous dormir dans une boucle? Si cela est nécessaire, un système d'événements devrait peut-être être mis en place. J'ai moi-même essayé la tactique de sommeil plusieurs fois pour la programmation javascript filetée de Mutli-fileté et la trouvée ne fonctionne pas bien. La meilleure façon de faire de multi-threading dans JavaScript consiste à utiliser un système d'événements tel que celui fourni par YUI ou presque tout autre cadre. Demandez à votre auditeur vous abonnez à cet événement et faites quelque chose quand cela se produit. Dans ces cadres d'événements, vous avez le contrôle total du moment où votre événement personnalisé incendie donc leur gros problème.

Voici le lien pour le cadre d'événement de Yui. P>

http://developer.yahoo.com/yui/examples/event/index.html p>

Voici comment il pourrait être codé à l'aide de YUI P>

var myObj = {
    count:0,
    doSomething:function(){alert(this.count++);}
    loopFunc:function(){
        this.doSomething();
        setTimeout('myObj.loopFunc()',1000);
    }
}


3 commentaires

Je fais des rappels avec JS aussi, et la seule chose que j'ai apprise est que votre loopfunc soit appelé avec ce tout sauf votre myobj . Vous devez un peu stocker le de ce dans une fermeture.


En dehors de cela, votre suggestion d'aller en fonction de l'événement vaut beaucoup!


Le deuxième exemple doit fonctionner car la loopfunc sera exécutée dans la portée de MyOBJ. Cela devrait donc se référer à Myobj, le seul problème que je n'aime pas, c'est que Myobj doit être une variable disponible globalement pour l'exécution de SettimeOut pour le trouver. Pouvez-vous expliquer comment vous entendez par «ceci dans une fermeture»?



2
votes

J'ai cherché / googlé assez de pages Web sur JavaScript Sleep / Wait ... Et il n'y a pas de réponse si vous voulez que JavaScript soit JavaScript sur "Exécuter, retarder" ... Qu'est-ce que la plupart des gens ont été, "courir, Exécuter (des choses inutiles), courir "ou" courir, courir + Run + Run "....

Alors j'ai mangé des hamburgers et j'ai pensé ::::: Voici une solution qui fonctionne ... mais vous devez bloquer vos codes de course ... ::: p>

// ................. ............................ // Exemple1: P>

<html>
<body>
<div id="id1">DISPLAY</div>

<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setTimeout
var i = 0;

function run() {
    //pieces of codes to run, can use switch statement
    if (i==0){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(1000);}
    if (i==1){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(2000);}
    if (i==2){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(3000);}
    if (i==3){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>";} //stops automatically
    i++;
}

function sleep(dur) {t=setTimeout("run()",dur);} //starts flow control again after dur

run(); //starts flow
</script>
</body>
</html>


0 commentaires

0
votes
function sleep(delay) { 
    var start = new Date().getTime(); 
    while (new Date().getTime() < start + delay); 
} 

1 commentaires

Donc, c'était comme il y a 10 ans ... mais pouvez-vous démontrer l'utilisation?



0
votes

Eh bien, si vous avez installé PHP sur le serveur Web, vous pouvez utiliser $. Charger ou similaire pour appeler un fichier php qui n'a que Sleep (int) ...


0 commentaires

1
votes

J'ai vu ce commentaire "J'ai essayé d'utiliser Settimeout, mais je n'ai pas besoin d'une fonction de continuation" et pensez, oui, vous faites. Ce que vous n'avez pas besoin, c'est une boucle. Vous avez besoin d'une fonction récursive.

Ceci P>

function recursive( i, max )
{
    if ( i > max ) return;
    alert( i );
    i = i + 1;
    setTimeout( function(){ recursive(i, max); }, 1000 );
}

recursive(1, 10);


0 commentaires

0
votes

Ceci est plus facile à réaliser ces jours avec l'utilisation de l'utilisation dactylographiée xxx

(à l'intérieur d'une fonction async): xxx

Ici:

https://codepen.io/britsymate/pen/ojrdorx


0 commentaires