PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli du 23/07/2013

⇐ retour index

setTimeout vs. setInterval for AJAX polls, Short Intervals Causing Timing Inaccuracies:

mercredi 20 mai 2015 à 17:03
KraZhtest - Liens utiles - C'est le bordel 20/05/2015
Une bonne page sur le timing en javascript, avec de bons exemples qui marchent et une bonne explication sur les boucles.
Le timing en js, c'est un peu la folie, setInterval, setTimeout.
C'est pourtant très utile pour faire quelque chose de neuf, action/reaction, du mouvement, quand on arrive à les chaîner les uns après les autres.
Les navigateurs n'ont pas toujours la même réaction. Ca depend beaucoup de la puissance de la machine client, du débit internet.
Même si ça n'a pas l'air lié, si une requête ajax tarde un peu ou echoue, Il arrive aléatoirement que des clearInterval ne passent pas, ce qui enmène à des boucles 2 fois plus rapides etc.. Le temps est maléable en javascript!

BONUS!
En cas d'urgence, quand rien ne va plus, voici un script pour arrêter toutes les boucles sur la page. On peut appeler une boucle par son nom, ce qui ne marche pas toujours comme voulu, mais aussi par son PID (son numero de processus), alors voici la methode brute-force:

{code

  for (var pok = 1; pok < 99999; pok++)
       window.clearInterval(pok);

code}
Ca va coller un window.clearInterval aux 99999 PID possibles et tout bloquer, c'est un peu bourrin mais ça ne prend pas plus de 50ms ;)
Ce qui permet ensuite de relancer des boucles, toujours sans recharger la page.