setTimeout comportement avec blocage de code

C'est mon code de test (violon ici):

console.log('Before wait');
setTimeout(function () { console.log('Yo!'); }, 1000);
var start = Date.now();
while (Date.now() < start + 3000) {}
console.log('After wait');

C'est la chronologie des événements dans google Chrome:

  • Time de 0 secondes: Imprime "Avant d'attendre"
  • De temps de 3 secondes: Imprime "Après attendre", et puis tout de suite après "Yo!"

Ce comportement est-il selon spec? Pourquoi n'est-il pas

  • Time de 0 secondes: Imprime "Avant d'attendre"
  • De temps de 3 secondes: Imprime "Après attendre"
  • Temps 4 seoncds: Imprime "Yo!"

?

InformationsquelleAutor Randomblue | 2013-02-13