curso node ciclo de vida de un proceso

Si tuviesemos el siguiente codigo:

console.log(`inicio`);

setTimeout(function(){
console.log(`primera function`);
}, 3000);
setTimeout(function(){
console.log(`segunda function`);
}, 0);
setTimeout(function(){
console.log(`tercera function`);
}, 0);

console.log(`fin`);

La salida seria

inicio
fin
segunda function
tercera function
primera function

porque????

node lo primero que hace es crear un main()en la cola de procesos
entonces
agrega a esta la primera sentencia
console.log.("inicio") y la ejecuta.

luego toma el bloque
setTimeout(function(){
console.log(`primera function`);
}, 3000);
y lo coloca tambien en la lista de procesos, la registra pero no la ejecuta
entonces la mueve a la pila de node apis.
hace los mismo con el segundo y tercer bloque SetTimeout

finalmente coloca la ultima sentencia console.log('fin') y como no es asincrona la ejecuta.
como no hay mas sentencias el metodo main termina()

mientras tanto el tiempo pasa y el 2do bloque ya esta listo para ejecutarse pero no se envia a la pila de procesos sino a la cola de callbacks, asi tambien el 3er bloque y el 1ero que era el que tenia mas segundos de espera.

ahora

node va a tomar el proceso que termino primero y lo llevara a ejecutar en la lista de procesos, y asi sucesivamente

No hay comentarios:

Publicar un comentario

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable