SETINTERVAL, SETTIMEOUT ET CLASS OBJET

ralecul Messages postés 111 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 1 août 2008 - 7 mars 2007 à 17:18
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 9 mars 2007 à 14:17
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41764-setinterval-settimeout-et-class-objet

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
9 mars 2007 à 14:17
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)
ralecul Messages postés 111 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 1 août 2008
7 mars 2007 à 17:18
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 !

@+
Rejoignez-nous