Menu
CoddyTech

La boucle d’événements

Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 18 sur 24.

Les rappels et les promesses s’exécutent plus tard, et les bogues se cachent dans le fait de ne pas savoir exactement quand.

Node exécute d’abord tout le code synchrone jusqu’à la fin. Ensuite, il exécute les microtâches : les rappels des promesses et les fonctions transmises à queueMicrotask. Ce n’est qu’ensuite que viennent les minuteries, même setTimeout(fn, 0), chacune lorsque son délai est écoulé.

setTimeout(() => console.log('C timer'), 0);
Promise.resolve().then(() => console.log('B promise'));
console.log('A sync');
// A sync, B promise, C timer

Un délai de 0 signifie dès que possible après les microtâches, jamais avant elles. Les minuteries se déclenchent dans l’ordre de leur délai ; en cas de délais égaux, celle qui a été programmée en premier se déclenche en premier.

challenge icon

Défi

Facile
  • order.js affiche 1 sync, 2 microtask, 3 timeout, 4 timeout later, dans cet ordre.
  • Garde les quatre lignes à leur place. Enveloppe-les dans un appel à queueMicrotask et deux appels à setTimeout.

Exécute node order.js et compare le résultat à ta prédiction. Donne ensuite un délai de 0 aux deux minuteries et exécute le programme à nouveau.

Essayez vous-même

// Fais afficher ces lignes dans l’ordre numérique sans les déplacer.
// Encapsule-les plutôt dans queueMicrotask et setTimeout.
console.log('4 timeout later');
console.log('3 timeout');
console.log('2 microtask');
console.log('1 sync');
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les bases de Node.js