Código errado
O padrão existe, mas alguém aplicou torto. Descobre qual e como consertar.
São os anti-exemplos do catálogo. Você lê o trecho, escolhe o conceito e depois vê o que quebra na prática e a correção.
Trecho 1 de 46
O problema
O código chama serviços remotos em sequência, um por item num laço, sem timeout e sem tratar falha de rede. Roda instantâneo no desenvolvimento, onde tudo é localhost, e passa em todos os testes — até ir para produção, onde cada chamada é uma travessia de rede e o laço vira segundos de espera que travam a tela inteira.
// Codigo escrito como se a rede fosse confiavel e a latencia, zero.
async function montarTela(userId: string) {
const perfil = await api.getPerfil(userId); // 1 chamada
const pedidos = await api.getPedidos(userId); // 2
const enderecos = [];
for (const p of pedidos) { // e agora o N+1:
enderecos.push(await api.getEndereco(p.enderecoId)); // +N chamadas
}
return { perfil, pedidos, enderecos };
}
// No dev, com o servidor em localhost, isso responde em milissegundos.
// Em producao, cada await e uma travessia de rede de dezenas de ms.
// 1 + 1 + N chamadas SEQUENCIAIS viram segundos de espera.
// E nenhuma tem timeout: se uma trava, a tela inteira trava com ela.