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