Menu
CoddyTech

El bucle de eventos

Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 18 de 24.

Las devoluciones de llamada y las promesas se ejecutan más tarde, y los errores se esconden en no saber exactamente cuándo.

Node ejecuta primero todo el código síncrono hasta el final. Después ejecuta las microtareas: las devoluciones de llamada de promesas y las funciones pasadas a queueMicrotask. Solo entonces vienen los temporizadores, incluso setTimeout(fn, 0), cada uno cuando se cumple su tiempo.

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

Un retraso de 0 significa tan pronto como sea posible después de las microtareas, nunca antes. Los temporizadores se activan en orden de retraso; si los retrasos son iguales, se activa primero el temporizador que se configuró primero.

challenge icon

Desafío

Fácil
  • order.js imprime 1 sync, 2 microtask, 3 timeout, 4 timeout later, en ese orden.
  • Deja las cuatro líneas donde están. Envuélvelas en una llamada a queueMicrotask y dos llamadas a setTimeout.

Ejecuta node order.js y compáralo con tu predicción. Después, asigna un retraso de 0 a ambos temporizadores y vuelve a ejecutarlo.

Pruébalo tú mismo

// Haz que estas líneas se impriman en orden numérico sin moverlas.
// En su lugar, envuélvelas en queueMicrotask y setTimeout.
console.log('4 timeout later');
console.log('3 timeout');
console.log('2 microtask');
console.log('1 sync');
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Conceptos básicos de Node.js