49 votes

Appel setTimeout sans délai

On voit assez souvent dans les bibliothèques JavaScript du code comme celui-ci :

 setTimeout(function() {
    ...
}, 0);

Je voudrais savoir pourquoi utiliser un tel code wrapper.

10voto

JaredPar Points 333733

Il y a plusieurs raisons pour lesquelles vous feriez cela

  • Il y a une action que vous ne souhaitez pas exécuter immédiatement, mais que vous souhaitez exécuter à une période proche.
  • Vous souhaitez autoriser d'autres gestionnaires déjà enregistrés à partir d'un setTimeout ou setInterval à s'exécuter

6voto

Senad Meškin Points 7248

Lorsque vous souhaitez exécuter le reste de votre code sans attendre la fin du précédent, vous devez l'ajouter dans la méthode anonyme transmise à la fonction setTimeout. Sinon votre code attendra que le précédent soit fait

Exemple:

 function callMe()
{
   for(var i = 0; i < 100000; i++)
     {
       document.title = i;
     }
} 

var x = 10;
setTimeout(callMe, 0);

var el = document.getElementById('test-id');
el.innerHTML = 'Im done before callMe method';

C'est la raison pour laquelle je l'utilise.

2voto

HBP Points 6676

Pour autoriser l'exécution de tous les délais d'attente précédemment définis.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X