Como funciona o ciclo de processamento de eventos no modelo Event Loop no Node.js?
sobes.tech IA
Resposta da IA
O Event Loop no Node.js é um mecanismo que permite executar operações não bloqueantes, apesar do caráter de thread único do ambiente.
As principais etapas do ciclo de processamento de eventos:
-
Timers: executam os callbacks agendados com
setTimeoutesetInterval, se o seu tempo tiver expirado. -
Pending Callbacks: processamento de alguns callbacks do sistema.
-
Idle, Prepare: operações internas do Node.js.
-
Poll: obtenção de novos eventos de E/S; execução de callbacks de E/S se estiverem prontos.
-
Check: execução de callbacks agendados com
setImmediate. -
Close Callbacks: processamento do encerramento de sockets e outros recursos.
O ciclo repete-se, verificando a fila de eventos e chamando os callbacks correspondentes. Se a fila estiver vazia, o Event Loop pode esperar por novos eventos ou terminar.
Exemplo:
setTimeout(() => console.log('timeout'), 0);
setImmediate(() => console.log('immediate'));
console.log('start');
A saída será:
start
immediate
timeout
Porque setImmediate é chamado na etapa Check, e setTimeout na etapa Timers do próximo ciclo.