TIMER : SETTIMEOUT & SETINTERVAL AMÉLIORÉS

Signaler
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014
-
jdmcreator
Messages postés
647
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
-
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/53911-timer-settimeout-setinterval-ameliores

jdmcreator
Messages postés
647
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
4
Voilà pour la version commentée !
jdmcreator
Messages postés
647
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
4
Bonjour Kimjoa, je te répond rapidement de mon téléphone :

Pour ton idée de créer une classe groupé, je pourrais ajouter la possibilité de définir un 'name' au timex et de supprimer tous les timex ayant ce nom. Ce serait la méthode la plus simple.

Pour eval, je ne comprends pas pourquoi on ne pourrait pas choisir un autre contexte :S Est-ce parce que cela n'a aucun résultat ?

Quant à la partie que tu ne comprends pas, si tu regardes à la fin de mon fichier demo.html, j'explique qu'il est possible de convertir un Timex créé grâce aux méthodes classiques setTimeout/setInterval en passant l'ID du timex à la fonction timer.convert(ID) . Cette fonction a donc 2 utilités : une que le codeur ne verra jamais (celle avec les Array, qui me permet de réduire mon code) et celle décrite dans la documentation.

Et merci pour la dernière remarque :) C'est impressionnant tout ce que Javascript nous permet. Et c'est pour cette raison que je vais commenter la source le plus tôt possible !

JDMCreator
cs_Kimjoa
Messages postés
264
Date d'inscription
vendredi 6 mai 2005
Statut
Membre
Dernière intervention
19 septembre 2014

Salut jdmcreator!

Ton code me plais déjà mieux ;).
L'idée de renvoyer un objet lors de la création d'un timex est plutot bien vue.

En faite quand je t'ai dit de préférer une approche POO, je pensais plus à quelque chose du genre :

var monGroupeDeTimer = new Timers();
var monTimer = monGroupeDeTimer.createTimeout(...);
var monInterval = monGroupeDeTimer.createInterval(...);
...
monGroupeDeTimer.clearAll();

Avec aussi, une méthode de classe clearAll qui fait la même chose mais pour tout les timer , et non un groupe instancié.
Mais bon c'est un peux chipotter, d'autant plus qu'il aurait été nécessaire de répéter certaines autre méthodes d'instance, pour permettre de ne pas être obliger l'instanciation d'un groupe.

Je comprends presque tout ton code sauf une partie :
if (!isNaN(parseInt(k))) {id k;var k this.key[k];if (!k) {return false}}

k est sencé etre un tableau .... pourquoi le transformer en nombre et tester isNaN ?

Sinon, du coté du eval.
f(function () {eval.call(cntx, fn);}, time);
Ca me semble une érreur.
eval doit toujours être appellé au niveau global. Le contexte de toute facon sera évalué en même temps.
donc eval.call(window, fn)

J'ai pas d'autre remarque sinon. Enfin si peux être :).
C'est un code compliqué quand même , dans le sens ou c'est une succession de lambda comme on dit ...
Des fonctions passé en arguments qui retourne des fonctions etc... Il est pas à la porté du premier javascripteur !
C'est un beau tour de force de ce que permet javascript , son coté dynamique et fonctionnelle

Tchuss!
jdmcreator
Messages postés
647
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
4
Bonjour Kimjoa,

J'ai posté la version 1.2 . Je n'ai pas encore commenté, mais si tu pourrais regarder tout cela (le fichier demo.html explique assez bien) et me donner tes commentaires, ce serait gentil =) Malheureusement, j'ai encore modifié les fonctions setTimeout/setInterval, mais dans une moins grande ampleur que dans les versions précédentes. J'essaierai de réduire encore plus les impacts dans les prochaines mises à jour. Le code contient encore des bugs que je m'efforce à régler, mais comme je ne serai pas là en fin de semaine, la version 1.2.1 et la version commenté devra encore attendre !

Merci,

JDMCreator
jdmcreator
Messages postés
647
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
4
@Kimjoa :

Le problème, c'est que si ne redéfinis pas les méthodes Timex, je ne peux pas lister les Timers définis (pour pouvoir les supprimer via clearAll() )