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.