AULA 29
MÓDULO 3
orientação a eventos
⏱ 50 min
Paradigma Orientado a Eventos
Eventos como notificação desacoplada. O event loop do Node.js. Por que Node processa I/O sem bloquear.
eventoemitterlistenerevent loopmicrotaskmacrotask
O que é um evento
Um evento é a notificação de que algo aconteceu. Em vez de A chamar B diretamente, A emite um evento. B (e C, D...) escuta esse evento e reage de forma independente. Desacoplamento total.
analogia — rádio
A rádio emite o sinal. Quem tem receptor, ouve. A rádio não sabe quantas pessoas estão ouvindo. Cada ouvinte reage de forma independente. Isso é orientação a eventos.Chamada direta (acoplado)
OrderService.create()
→ EmailService.send()
→ StockService.decrement()
→ AnalyticsService.track()
→ EmailService.send()
→ StockService.decrement()
→ AnalyticsService.track()
Evento (desacoplado)
OrderService.emit("order.created")
← EmailService ouve
← StockService ouve
← AnalyticsService ouve
← EmailService ouve
← StockService ouve
← AnalyticsService ouve
O Event Loop do Node.js
O event loop é o coração do Node.js. Um único thread que processa eventos em fila — sem bloquear enquanto aguarda I/O.
como funciona
Quando você faz fs.readFile(), o Node delega ao SO, registra o callback e continua. Quando o arquivo está pronto, o SO notifica o Node, que coloca o callback na fila do event loop. Sem thread bloqueada.
javascript
// Event loop — demonstração com timer console.log("1 — síncrono") setTimeout(() => console.log("3 — macrotask"), 0) Promise.resolve().then(() => console.log("2 — microtask")) console.log("1.5 — ainda síncrono") // Output: 1 → 1.5 → 2 → 3 // Microtasks (Promise) antes de macrotasks (setTimeout) // I/O não-bloqueante const fs = require('fs') fs.readFile('./data.json', 'utf8', (err, data) => { // Executado quando o arquivo estiver pronto // Enquanto isso, outras requisições foram processadas console.log('Arquivo lido:', data.length, 'bytes') }) console.log("Continua sem bloquear!")
quiz · aula 29
Teste seus conhecimentos
0/3 respondidas
QUESTÃO 01
Qual é a principal vantagem do paradigma orientado a eventos?
QUESTÃO 02
O que garante que o Node.js não bloqueia ao fazer I/O?
QUESTÃO 03
Qual a ordem de execução: sync, Promise, setTimeout(0)?
0/3