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 timerUn 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.
Desafío
Fácilorder.jsimprime1 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
queueMicrotasky dos llamadas asetTimeout.
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');
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
1Ejecutar JavaScript en Node
Hola, NodeArgumentos de la línea de comandosComandos