Soyez le premier à donner votre avis sur cette source.
Vue 7 743 fois - Téléchargée 342 fois
/*---------------------------------------------------------------------- POUR UN PETIT SOMME Auteur : Phil Perret (philippe.perret@yahoo.fr) Date : Janvier 2010 Un exemple est proposé en bas de page, qu'il suffit d'appeler avec : AppelTestSleep() cf. l'explication de l'utilisation dans le fichier "sleep.dat" ----------------------------------------------------------------------*/ /*---------------------------------------------------------------------- POUR UTILISER LES PAUSES DANS VOS SCRIPTS, COPIER-COLLER LE CODE CI-DESSOUS Le code ci-dessous permet de faire des pauses (sleep, wait) dans une fonction. Dans le code ci-dessous : – Tous les `maFonction` doivent être remplacés par le nom de votre fonction (de vos fonctions). – Les temps doivent bien sûr être adaptés suivant votre convenance Note : pour récupérer un argument envoyé à la fonction/méthode, il suffit d'utiliser : var <maValeur> = my.<nomFonction>.args[<indice argument>]; où <nomFonction> Nom de la fonction/méthode <indice arg> Indice de l'argument quand il a été envoyé en appelant <nomFonction> (0-start) // *************** CODE À COPIER ********************* function maFonction(arg1 [, arg2… argN]){ // Initialisation if ( "undefined" != typeof this.maFonction ){ my = this ; this.maFonction.my = this ; my.maFonction.etape = 0 ; // Conserver les arguments my.maFonction.args= my.maFonction.arguments ; } else { my = arg1 ; } if (my.maFonction.etape<(step=1)){ //***************************************** // // Définir ici ce qu'il faut faire avant // le premier arrêt // //***************************************** // Premier break (2 secondes) sleep(2000);}else if(my.maFonction.etape<(++step) ){ //***************************************** // // Définir ici ce qu'il faut faire avant // le deuxième arrêt // //***************************************** // Deuxième break sleep(1500);}else if(my.maFonction.etape<(++step) ){ //***************************************** // // Définir ici ce qu'il faut faire avant // le troisième arrêt // //***************************************** //***************************************** // // Ajouter autant d'arrêts que voulu simplement en // copiant-collant la ligne commençant par 'sleep(' // ci-dessus. // // Penser à : // 1/ Remplacer "maFonction" par le nom de votre // fonction // 2/ Indiquer correctement le temps d'arrêt // //***************************************** // Dernier break, de 10 secondes sleep(10000);} else { //***************************************** // // Définir ici ce qu'il faut faire pour // terminer // //***************************************** } } // *************** FIN CODE À COPIER ********************* ----------------------------------------------------------------------*/ function sleep(temps){ this.awake.appelante= this.sleep.caller ; this.awake.contexte = this.sleep.caller.my ; this.awake.timer = setTimeout(awake, temps); } function awake(){ this.awake.appelante.etape ++ ; this.awake.appelante(this.awake.contexte) ; } /* LE CODE CI-DESSOUS (JUSQU'AU BOUT) EST DONNÉ POUR EXEMPLE. IL PEUT ÊTRE DÉTRUIT. Pour l'essayer, jouer : AppelTestSleep();
12 mars 2010 à 02:05
En fait je souhaite retourner un résultat à la fonction appelante
Cela ne marchera pas si je fais un setInterval() car dans ce cas la fonction retournera automatiquement undefined
Laissez faire, je pense à utiliser une autre méthode ;) Mais merci tout de même ;)
11 mars 2010 à 07:23
Pour ton problème, utiliser mon script, ce serait utiliser un bazooka pour écraser une mouche.
Ce que tu décris, c'est la fonctionnalité principale de setInterval, donc je te conseillerais de voir par là. setInterval permet d'appeler à intervalle régulier une fonction/du code (donc pour toi la fonction de condition de test).
Schématiquement :
function MaFonctionQuiTraiteLaCondition(){
//…
//… ici on traite la condition
//…
}
//= Lancement de la boucle temporisée
// Le code signifie : "tous les 1000 millièmes de secondes
// (toute les secondes), appeler la fonction
// `MaFonctionQuiTraiteLaCondition`"var maBoucleDeCondsetInterval(MaFonctionQuiTraiteLaCondition, 1000 /* 1000 millième de secondes */);
(à vérifier : le premier argument de setInterval doit peut-être être un string, pas une référence : "MaFonctionQuiTraiteLaCondition")
Hope it helps
10 mars 2010 à 23:55
Félicitation ! Votre code est exactement ce qu'il me faut ! Malheureusement, j'ai du mal à l'adapté à ma situation.
Je souhaiterais l'utiliser en boucle, je m'explique
À chaque seconde, on vérifie une condition, sinon, on fait une pause puis on regarde de nouveau la condition après ce lap de temps
Pourriez-vous m'aider s'il vous plaît ?
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.