JavaScript Moderno ES6+ & Assincronismo Avançado
Do Módulo 0 ao Projeto Final: closures, arrow functions, destructuring, arrays modernos, ES Modules, Event Loop, Promises, Async/Await, concorrência, resiliência, testes e Dashboard Logístico.
Módulo 0 — Preparação e Diagnóstico
Instalação do Node.js, VS Code, DevTools, package.json e primeiro programa.
Módulo 1 — Funções, Escopo e Closures
let, const, hoisting, default params, callbacks, escopo léxico e closures.
1.1 let, const, Hoisting & Escopo Léxico
let e const possuem escopo de bloco e permanecem na Temporal Dead Zone até a declaração. var possui escopo de função com hoisting descontrolado.
1.2 Closures & Projeto: Biblioteca de Validações
Construa uma fábrica de validadores como criarValidadorTamanho(min, max) que retorna uma função interna presa ao escopo léxico criador.
Módulo 2 — Arrow Functions
Sintaxe completa, retorno implícito, arrow functions assíncronas e escopo do this.
2.1 Sintaxe, Retornos Implícitos & Lexical "this"
Arrow functions capturam o "this" do contexto externo. Evite em métodos de objetos literais e construtores.
2.2 Projeto: Transformador de Pedidos
Implemente pipeline de cálculo de frete e impostos usando arrow functions encadeadas com retorno implícito de objetos ({ ...pedido, total }).
Módulo 3 — Desestruturação, Rest e Spread
Destructuring de objetos/arrays, rest parameters, spread e structuredClone.
3.1 Destructuring, Spread vs structuredClone()
Spread (...) realiza cópia rasa. Para clonar estruturas profundamente sem manter referências no Heap, use structuredClone().
3.2 Projeto: Normalizador de Respostas de API
Normalize campos brutos de APIs externas desestruturando objetos aninhados com fallbacks e renomeação de propriedades.
Módulo 4 — Arrays e Objetos Modernos
map, filter, reduce, find, findIndex, toSorted, flatMap, ?. e ??
4.1 Optional Chaining (?.) & Nullish Coalescing (??)
?. evita TypeError em caminhos nulos. ?? fornece padrão apenas para null e undefined (preservando 0 e "").
4.2 Projeto: Relatório de Vendas e Operações
Gere relatórios ordenados de vendas com imutabilidade usando toSorted() e reduce() para totais agregados.
Módulo 5 — Módulos ES6
export, import, nomeados, default, dynamic import e top-level await.
5.1 ES Modules, Importação Dinâmica & Top-Level Await
Análise estática com import/export, resolução circular e carregamento assíncrono via import() dinâmico.
5.2 Projeto: Aplicação Dividida em Módulos
Divida uma aplicação em diretórios de serviços, formatadores e validadores exportados e importados de forma limpa.
Módulo 6 — Event Loop
Call Stack, Web APIs, Task Queue, Microtask Queue, Promises vs timers e CPU vs I/O bound.
6.1 Call Stack, Microtasks & Macrotasks
A Microtask Queue (Promises, queueMicrotask) tem prioridade absoluta e é esvaziada antes de qualquer Macrotask (setTimeout).
6.2 Projeto: Laboratório de Ordem de Execução
Valide experimentalmente a ordem de saída no console combinando código síncrono, microtasks e timers.
Módulo 7 — Promises
Pending, fulfilled, rejected, resolve, reject, .then(), .catch(), .finally() e promisify.
7.1 Estados da Promise & Encadeamento
Uma vez settled (fulfilled ou rejected), o estado da Promise não se altera. Erros propagam até o primeiro .catch().
7.2 Projeto: Cliente Assíncrono Simulado
Simule requisições de rede com delays e encadeamento de dados de resposta tratando exceções globalmente.
Módulo 8 — Async/Await
Funções async, await, exceções, try/catch/finally, sequencial vs concorrente e loops assíncronos.
8.1 Operador Await & Cuidado com forEach(async)
forEach não aguarda código async! Use for...of para iteração sequencial ou Promise.all(map) para execução paralela.
8.2 Projeto: Consulta de Pedidos em uma API
Implemente serviço de busca async que consome endpoints JSON com tratamento de erros em blocos try/catch.
Módulo 9 — Concorrência Assíncrona
Promise.all, allSettled, race, any, falha rápida, batching e limitação de concorrência.
9.1 Promise.all vs Promise.allSettled vs Race vs Any
Promise.all para falha rápida. Promise.allSettled para tolerância a erros parciais. Promise.race para timeout de resposta.
9.2 Projeto: Agregador de Múltiplas APIs
Consulte APIs de frete e estoque em lote paralelo tratando rejeições parciais sem interromper a tela.
Módulo 10 — Resiliência Assíncrona
Timeout, AbortController, cancelamento, Retry, Backoff exponencial, Jitter e Circuit Breaker.
10.1 Cancelamento com AbortController & Retry com Backoff + Jitter
AbortController cancela requisições em andamento. Retry com backoff exponencial e jitter randômico evita picos de acessos após queda de servidor.
10.2 Projeto: Cliente HTTP Resiliente
Construa cliente HTTP que interrompe novas requisições (Circuit Breaker OPEN) quando a taxa de falhas do servidor ultrapassa o limite.
Módulo 11 — Testes Assíncronos
Testes de Promises, Mocks/Stubs, Fake timers, Node Test Runner e Vitest.
11.1 Testando Rejeições, Timeouts & Fake Timers
Use assert.rejects() e Mocks/Fake Timers para simular delays de rede e falhas sem tornar a suíte de testes lenta.
11.2 Projeto: Suíte Automatizada do Cliente HTTP
Escreva testes automatizados para validar cancelamento via AbortController, contagem de retentativas e circuito aberto.
Módulo 12 — Projeto Final
Construção do Dashboard de Operações Logísticas integrando todos os 12 módulos anteriores.
12.1 Projeto Final: Dashboard de Operações Logísticas
Aprenda requisitos integrados do dashboard logístico com conceitos práticos e exercícios aplicados.