begin process at 2012 05 28 14:55:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date & Heure

 > SLEEP() SANS BOUCLE D'ATTENTE CONSOMMATRICE

SLEEP() SANS BOUCLE D'ATTENTE CONSOMMATRICE


 Information sur la source

Note :
Aucune note
Catégorie :Date & Heure Classé sous :pause, attente, interruption, timeout, waiting Niveau :Débutant Date de création :05/01/2010 Date de mise à jour :11/01/2010 11:54:15 Vu / téléchargé :3 900 / 154

Auteur : Phildepantin

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

J'ai créé cette fonction sleep([temps de pause]) pour mes propres besoins (effets visuels principalement, ou diaporama), elle qui peut être utilisée partout, même dans des objets, sans recours à une boucle d'attente consommatrice.
Elle est un peu contraignante au niveau de son implémentation, mais mais beaucoup plus facile que l'utilisation d'un time out.
Il suffit de copier-coller le code proposé pour l'utiliser.

Source

  • /*----------------------------------------------------------------------
  • 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>];
  • <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&#8230; 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();
  • */
  • function AppelTestSleep(){
  • monObjetTest.TestSleep("Le premier pour dire bonjour", "le second pour dire au revoir");
  • }
  • var monObjetTest= {
  • mon_age: 46,
  • mon_age_mental: 4,
  • TestSleep: function(message1, message2) {
  • // Initialisation
  • if ( "undefined" != typeof this.TestSleep ){
  • my = this ;
  • this.TestSleep.my = this ;
  • my.TestSleep.etape = 0 ;
  • // Conserver les arguments
  • my.TestSleep.args= my.TestSleep.arguments ;
  • } else {
  • my = message1 ;
  • }
  • if ( my.TestSleep.etape<(step=1)) {
  • alert("Je vais délivrer le premier message dans 5 secondes.");
  • sleep(5000);
  • }
  • else if ( my.TestSleep.etape < (++step) ) {
  • alert("Le premier message est : " + my.TestSleep.args[0]
  • + "\n\nJe donnerai le suivant dans 3 secondes.") ;
  • sleep(3000);
  • }
  • else if ( my.TestSleep.etape < (++step) ) {
  • alert("Le deuxième message est : " + my.TestSleep.args[1]
  • + "\n\nEt j'ai " + my.mon_age + " ans."
  • + "\n\nJe terminerai dans 6 secondes, si Dieu le veut.") ;
  • sleep(6000);
  • } else {
  • alert("j'ai fini !");
  • }
  • }
  • }
/*----------------------------------------------------------------------

	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 :
		&#8211; Tous les `maFonction` doivent être remplacés par le nom de votre fonction (de vos fonctions).
		&#8211; 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&#8230; 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();
*/

function AppelTestSleep(){
	monObjetTest.TestSleep("Le premier pour dire bonjour", "le second pour dire au revoir");
}


var monObjetTest= {
	
	mon_age: 46,
	mon_age_mental: 4,
	
	TestSleep: function(message1, message2) {
		
		// Initialisation
		if ( "undefined" != typeof this.TestSleep ){
			my = this ;
			this.TestSleep.my = this ;
			my.TestSleep.etape = 0 ;
			// Conserver les arguments
			my.TestSleep.args= my.TestSleep.arguments ;
		} else {
			my = message1 ;
		}
	
		if ( my.TestSleep.etape<(step=1)) {
		
			alert("Je vais délivrer le premier message dans 5 secondes.");
			
			sleep(5000);
		}
		else if (  my.TestSleep.etape < (++step) ) {
		
			alert("Le premier message est : " + my.TestSleep.args[0] 
				+ "\n\nJe donnerai le suivant dans 3 secondes.") ;
			
			sleep(3000);
		}
		else if (  my.TestSleep.etape < (++step) ) {
		
			alert("Le deuxième message est : " + my.TestSleep.args[1] 
				+ "\n\nEt j'ai " + my.mon_age + " ans."
				+ "\n\nJe terminerai dans 6 secondes, si Dieu le veut.") ;
		
			sleep(6000);
		} else {
			alert("j'ai fini !");
		}
	}
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

11 janvier 2010 11:54:15 :
Ajout de la source en lecture

 Sources du même auteur

MODIFIER SES FEUILLES DE STYLES .CSS À LA VOLÉE AVEC JAVASCR...

 Sources de la même categorie

NOMBRE DE JOURS, MOIS ET ANNÉES DEPUIS LA NAISSANCE par marcenana
Source avec Zip CALENDRIER ANNUEL UNIVERSEL AVEC SAINTS DU CALENDRIER ET FÊT... par 007Julien
OBTENIR LE NOMBRE DE JOURS D'UN MOIS SUIVANT SON ANNÉE par hugolegrand
SAINT DU JOUR par tefa24600
Source avec Zip Source avec une capture NIPCLOCK 1.2 par neep

 Sources en rapport avec celle ci

Source avec Zip CHRONOMÈTRE AMÉLIORÉ par Kolosta
MESSAGE D'ATTENTE LORS DU CHRGEMENT D'UNE PAGE À LA GOOGLE E... par lenono75
Source avec Zip Source avec une capture MESSAGE DÉROULANT AVEC PAUSE par PetoleTeam
PAUSE, OU APELLER UNE FONCTION TOUTE LES X SECONDES ... par GuilleW

Commentaires et avis

Commentaire de jdmcreator le 10/03/2010 23:55:15

Bonjour,

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 ?

Commentaire de Phildepantin le 11/03/2010 07:23:11

Merci JDMCreator,

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 maBoucleDeCond= setInterval(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

Commentaire de jdmcreator le 12/03/2010 02:05:52

Merci, je connais déjà cette fonction et ce n'est pas ce que je recherche ;)

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 ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Timeout [ par turlut ] Bonjour tout le monde !J'aimerais bien créer un code javascript qui ouvre une fenêtre avec un url genre www.monsite.com/index.php?url= avec une boucl SeTtimeout et frame [ par fcdconnect ] petit probleme ce script ne fonctionne pas (le timeout)onClick="javascript:setTimeout(parent.topFrame.document.location.reload(),4000);"l'objectif est attente c est long dic donc ... [ par amosc ] amosSalut tt le monde;Est ce que quelqu'un c est comment faire pour afficher une page ou une anim pendant l attente de telechargement du site ou d'une Comment afficher un page d’attente lorsque la page d’asp.net va etre charger 100% [ par mwahid ] Comment afficher un page d?attente lorsque la page d?asp.net va etre charger 100% pause dans un programme[pb]-- [ par hypermusic ] Bonjour..Je suis d&#233;sol&#233;, je sais que la question a &#233;t&#233; pos&#233;e des milliers de fois, mais j'ai pas trouv&#233; de reponses...Av compte a reboure Casser [ par wizard512 ] vouyala j'ai cr&#233;er un page qui se r&#233;actualise Toutes les 100 secondes, en indiquand le reste du temps avant la r&#233;actualisation dans un Chargement d'une page en attente d'une autre [ par ymerej ] Bonjour, j'ai une page index.html composée de plusieurs frames. L'une de ses frames est assez longue à charger car elle comporte des images. J'aimera Flash Aléatoire [ par XCONTROL90 ] Bonjour je cherche un code depuis 2 jours pour charger de mani&#232;re al&#233;atoire des anims flash au m&#234;me titre que des images. Mais je trouv Erreur boutons Play ^Pause Stop sous Mac [ par kakte ] Bonjour, j'ai fait une page avec une vidéo html en modifiant l'apparence des boutons du player. Sous PC? tout va bien, mais sous Mac, j'ai le message Message d'attente pendant upload [ par cyberrider ] Bonjour,J'ai un formulaire qui permet d'uploader des images, je voudrais une solution pour afficher un message pendant l'upload de l'image du genre "m


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,652 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales