Je regarde du code existant dans une application Web. J'ai vu ça:
window.setTimeout(function () { ... })
Est-ce la même chose que simplement exécuter le contenu de la fonction immédiatement?
Cela ne courira pas nécessairement tout de suite, non plus explicitement définir le délai à 0. La raison est que Settimeout supprime la fonction de la file d'attente d'exécution et qu'elle ne sera appelée que lorsque JavaScript est terminée avec la file d'attente d'exécution en cours.
console.log(1);
setTimeout(function() {console.log(2)});
console.log(3);
console.log(4);
console.log(5);
//console logs 1,3,4,5,2
pour plus de détails, voir http://javascriptweblog.wordpress.com/2010/06/28/Snerstanding-javascript-Mers/
Il existe un délai minimum que setTimeout
utilise (4 ms selon HTML5, Firefox 3.6 utilise 10 ms). Il y a une discussion à ce sujet sur le Centre de développeur Mozilla page de documentation .
Il vous manque le paramètre millisecond ...
setTimeout(function() { /*something*/ }, 0);
Le 0 définit le délai à 0, mais ce qu'il fait en réalité, c'est de laisser votre fonction "Sauter la file d'attente" de la liste d'exécution du navigateur. Le navigateur a un tas de choses à faire, telles que des objets de rendu sur la page, et en appelant cela, votre fonction fonctionnera dès que le navigateur a des cycles.