JavaScriptMódulos e Errosavancado
Retry com backoff
Em aplicações reais, chamadas a APIs externas ou bancos de dados podem falhar temporariamente por rede ou sobrecarga. Usar retry com backoff exponencial resolve isso: tenta novamente com intervalos crescentes, evitando sobrecarregar o serviço e aumentando a chance de sucesso sem travar o sistema.
O PROBLEMA
Implemente retry(fn, tentativas, delayMs) com backoff exponencial.
EXEMPLO
async function retry(fn, tentativas=3, delay=1000) {
for (let i=0; i<tentativas; i++) {
try { return await fn(); }
catch(e) { if (i === tentativas-1) throw e; await esperar(delay * 2**i); }
}
}SOBRE O CONCEITO
O retry com backoff usa um laço for com try/catch. Dentro do catch, após uma falha, espera-se um tempo que cresce exponencialmente, como delay * 2**i, onde i é o número da tentativa. O erro comum é usar um delay fixo, o que não dá alívio ao servidor e pode piorar a condição. Aumentar o tempo a cada falha é essencial para o padrão funcionar.
RESOLUÇÃO
Mais exercícios de Módulos e Erros
JSM003 · BásicoTipos de erroJSM005 · BásicoError propertiesJSM006 · BásicoExport nomeadoJSM008 · BásicoImport * as
Ver todos os exercícios de JavaScript →