Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine um garçom em um restaurante movimentado. Ele recebe pedidos das mesas, os entrega para a cozinha e, enquanto espera os pratos ficarem prontos, atende outros clientes, tira dúvidas e limpa mesas. Ele não fica parado esperando um prato ficar pronto antes de atender outro cliente. Essa é a essência do Event Loop.
Compreender o Event Loop é absolutamente essencial para construir APIs modernas e performáticas com Node.js. Ele é o coração da arquitetura não bloqueante do Node, permitindo que ele lide com múltiplas requisições simultaneamente sem travar.
Nesta aula, você vai aprender o que é o Event Loop, como ele funciona, e como usá-lo para criar aplicações Node.js eficientes. Você também verá exemplos práticos e um exercício para solidificar seu aprendizado.
No contexto do ecossistema Node.js/Express, o Event Loop é a base que possibilita o desenvolvimento de aplicações web escaláveis e responsivas, capazes de atender a milhares de usuários concorrentes.
Conceito Fundamental (7 min)
O Event Loop é um mecanismo que monitora constantemente a fila de eventos (Event Queue) e a pilha de chamadas (Call Stack). Quando a pilha de chamadas está vazia, o Event Loop pega o primeiro evento da fila e o executa.
A fila de eventos armazena as tarefas assíncronas, como leitura de arquivos, requisições de rede e timers (setTimeout, setInterval). A pilha de chamadas guarda as funções que estão sendo executadas no momento.
Um caso de uso real em produção é o processamento de requisições HTTP em um servidor web. Enquanto uma requisição está aguardando a resposta de um banco de dados, o Event Loop pode processar outras requisições, evitando gargalos e melhorando a performance.
O Event Loop se integra com outras tecnologias assíncronas, como Promises e Async/Await, facilitando o desenvolvimento de código assíncrono mais legível e manutenível.
Vantagens: Alta performance, escalabilidade, ideal para aplicações I/O-bound.
Desvantagens: Pode ser complexo de debugar em cenários com código assíncrono aninhado.
Implementação Prática (10 min)
// Servidor básico com Express.js
const express = require('express');
const app = express();
const port = 3000;
// Middleware para logging (boa prática enterprise)
app.use((req, res, next) => {
console.log(Requisição recebida: ${req.method} ${req.url});
next();
});
app.get('/', (req, res) => {
res.send('Olá, Event Loop!');
});
// Simulando uma operação assíncrona (leitura de arquivo, por exemplo)
app.get('/async', (req, res) => {
setTimeout(() => {
res.send('Resposta assíncrona após 2 segundos.');
}, 2000); // Simula um delay de 2 segundos
});
// Error handling robusto
app.use((err, req, res, next) => {
console.error(err.stack); // Log do erro com stack trace
res.status(500).send('Erro interno do servidor.');
});
app.listen(port, () => {
console.log(Servidor rodando na porta ${port});
});
Para rodar o código:
📚 Informações da Aula
Curso: API Completo - Node.js & Express
Tempo estimado: 25 minutos
Pré-requisitos: JavaScript básico
node seu_arquivo.js
Este código demonstra como o Event Loop lida com requisições síncronas e assíncronas. A rota / responde imediatamente, enquanto a rota /async simula uma operação assíncrona com setTimeout. O Event Loop permite que o servidor continue processando outras requisições enquanto aguarda o setTimeout completar.
Configurações como a porta 3000 são compatíveis com o HostGator Plano M. O logging e o error handling demonstram boas práticas enterprise.
Exercício Hands-On (5 min)
Crie uma nova rota /delayed que utiliza setTimeout com um delay de 5 segundos. Dentro do setTimeout, acesse um array com 5 elementos e imprima cada elemento no console com um intervalo de 1 segundo entre cada impressão, usando outro setTimeout aninhado.
Solução:
app.get('/delayed', (req, res) => {
setTimeout(() => {
const dados = [1, 2, 3, 4, 5];
let i = 0;
const intervalo = setInterval(() => {
if (i < dados.length) {
console.log(dados[i]);
i++;
} else {
clearInterval(intervalo);
res.send('Dados processados com delay.');
}
}, 1000);
}, 5000);
});
Para testar, acesse a rota /delayed no seu navegador. Observe os logs no console do seu servidor. Você verá que o servidor responde imediatamente à requisição inicial, enquanto o processamento dos dados ocorre em background graças ao Event Loop.
Troubleshooting: Certifique-se de que você parou e reiniciou o servidor após adicionar o novo código. Verifique se o setInterval está sendo limpo com clearInterval para evitar vazamentos de memória.
Próximos Passos: Explore o uso de Promises e Async/Await para simplificar o código assíncrono e melhorar a legibilidade.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!