Sobes.tech
Junior — Middle

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:

  1. Timers: executam os callbacks agendados com setTimeout e setInterval, se o seu tempo tiver expirado.

  2. Pending Callbacks: processamento de alguns callbacks do sistema.

  3. Idle, Prepare: operações internas do Node.js.

  4. Poll: obtenção de novos eventos de E/S; execução de callbacks de E/S se estiverem prontos.

  5. Check: execução de callbacks agendados com setImmediate.

  6. 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.