Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SETINTERVAL, SETTIMEOUT ET CLASS OBJET


Information sur la source



Description

Source sous forme de TUTO
Comment résoudre le problème lié à setInterval ou setTimeout lorsque l'appel fait référence à la fonction d'un objet...
du style
  this.Timer = setInterval( "this.Fonction()", this.Delai);
ou
  this.Timer = setTimeout( "this.Fonction()", this.Delai);

La mise en application du code qui suit reléve d'un niveau débutant++ même si les explications s'approchent d'un niveau initié--
 

Conclusion

Il aurait été plus judicieux de livré cela sous forme de TUTORIAL mais c'est plus aisé a réaliser cela sous forme de code.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de ralecul le 07/03/2007 17:18:41

Salut,

Il y a tout de même beaucoup plus simple pour faire la même chose (ou alors j'ai mal compris :-)

Voila comment je fais :

function Objet_Start(){
  this.Stop(); // On arrete d'abord
  this.Show(); // On montre ensuite
  //-- Appel de la fonction
  var localThis = this;
  this.Timer = setInterval(function(){localThis.Show()}, localThis.Delai);
}

En gros j'utilise la méthode de l'exemple 2 avec une variable locale !

Sinon une remarque : il vaut mieux utiliser une fonction anonyme que de donner le nom de la fonction sous forme de chaine de caractere (en paramètre à setInterval), normalement c'est plus rapide...

J'ai utilisé cette astuce pour réaliser la version OO de mon afficheur de panorama 360° : Yajev.
(Mais il est vrai que je n'avais pas souligné que j'avais rencontré ce problème moi aussi...)

Au fait bravo pour le tuto en html : c'est la classe !

@+

signaler à un administrateur
Commentaire de PetoleTeam le 09/03/2007 14:17:41

Bonjour,
J’ai essayé de répondre clairement…

J’ai finalement décidé d’écrire ce SOURCE TUTO suite aux problèmes rencontrés par les codeurs sur pas mal de Forum, et il a bien évolué en fonction des différents cas rencontrés le but étant d’essayer d’en faire une synthèse claire et accessible au plus grand nombre.

Je suis, donc, resté volontairement hors function anonyme, que j'utilise d’ailleurs peu, pour des raisons de clarté de code, pour ne pas ajouter au trouble, le problème étant pour moi au départ ailleurs.

Comme je l’annonce dans les conclusions, bien peu exhaustive, de l’index.htm
"Je ne doute pas qu'il existe d'autres façons de résoudre ce problème..."

En ce qui concerne "le plus simple pour faire la même chose" je reste dans l’expectative…

Passage de la fonction par string ou par pointeur la ne devait pas être la question, bien que la solution 2BIS passe la fonction par pointeur en fait et est très proche de la fonction anonyme dans par son mécanisme, enfin me semble t-il.

Sur le plan de la vitesse :
A l’époque sur mon 486SX la question ne se posait même pas le passage par pointeur n’étant encore pas d’actualité et  je n’ai pas de bille, actuellement, pour le tester sauf à savoir qu’il y a transformation d’une chaîne en pointeur avant exécution de la fonction donc fatalement des temps horloge en plus, mais en contre partie, dans ta méthode, il y a affectation d’un variable avant appel puis création d’une fonction, donc sans info sur la manière dont traite cela les navigateurs je ne saurais répondre avec certitude.
Il faudrait pour bien faire analyser le code généré par les différents navigateurs à la lecture des SCRIPTs.

Seule certitude les fonctions crées avec le constructeur Function, new Function( blabla..., sont évaluées à chaque appel, donc en terme de vitesse à éviter autant que faire ce peu.

Si j’avais réalisé un TUTORIAL exhaustif, ou presque, il est vrai qu’il aurait été impensable de ne pas parler de ton exemple et de la méthode par function anonyme.

Merci pour ton commentaire qui m’a permis de prendre un peu de recul.
;0)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

fonction avec parametres [ par suomi ] J'aimerais passer un objet (this) en parametre d'une fonction appelée par setTimeout (comme suit), mais je n'y arrive pas.La fonction setTimeOut deman "settimeout" dans une classe [ par francois44 ] Bonjour à tous!Je suis actuellement en train de bosser sur une classe d'affichage de NEWS.Je sais qu'il y en a plein dans les sources, mais j'ai rien setTimeout [ par DarkCid ] Bonjour,j'essaye de créer mon objet compte à rebours pour mon site. pour l'instant, j'ai ceci :function Timer(){   var time         = '';        var c Problême de setTimeout dans un objet [ par kurt67 ] Salut à tous! Mon problême est assez simple et ça fait deux jours que je cherche une solution et je n'en ai pas trouvé. J'ai un objet avec des méthode Problème setTimeout et poo - valeur qui ne change pas (au secours...) [ par 0Philooz0 ] Bonjour,J'ai un problème ( depuis maintenant deux jours ) avec le bout de code suivant:///Portion de code qui pose problème.fun Erreur "Objet Attendu" [ par mocbidouille ] Bonjour,J'ai un souci qui va me rendre dingue... J'ai cherché la solution tout l'aprem en vain... Ma page me renvoi constament une erreur "Objet Atten class et id définis dans une même balise ? [ par sagat06 ] Bonjour à tous.J'aimerais savoir s'il existe un moyen de définir à la fois la class et l'id d'une div, du genre:<div class='no1' id='no2'>En eff Objet active x pour creer un serveur ? [ par papipsycho ] Bonjourje recherche un object active x pour fair comme ajax mes sous forme de serveur que l'on puisse ouvrire un port ect ...--==Papi Psycho==-- tableau desactivation [ par mouness ] Salut a tous il y a quelque jour grace a un certain jedinoobewan (perso c'est obiwan) bref j'ai mi en place dans mon code un truc du genre ca<html& Problème menu déroulant avec Firefox [ par franckdu34 ] Bonjour,J'ai mis un menu déroulant sur mon site qui fonctionne parfaitement sous Internet Explorer mais pas sous Firefox.Quelqu'un aurait-il la soluti


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.