1
resposta

Condicional maior ">" ou maior ou igual ">="?

Não entendi o por que da função retry ser chamada 3 vezes como esperado sendo que no return, retries está condicionada a funcionar quando ela for maior que 1 ">" e não quando ela foi maior ou igual ">="... A impressão que dá é que ela executa a função antes de passar pela condicional

Expliquem-me como acontece o código, por favor!

export const retry = (retries, milliseconds, fn) => 
  fn().catch(err => { 
    console.log(retries);
    return delay(milliseconds)().then(() => 
    retries > 1
    ? retry(--retries, milliseconds, fn)
    : Promise.reject(err))
  })

`

1 resposta

Olá Henrique, tudo bem?

Desculpe a demor em retornar.

A função retry é uma função que tenta executar uma função fn e, caso ocorra um erro, ela tenta executar novamente por um número determinado de vezes (retries).

No código apresentado, a função retry é chamada de forma recursiva (ela chama a si mesma) enquanto a variável retries for maior que 1. Ou seja, a função será chamada 3 vezes se o valor inicial de retries for 3.

Quanto à sua dúvida sobre a condição retries > 1, ela é utilizada para garantir que a função fn seja executada novamente apenas se o número de tentativas ainda não tiver sido esgotado. Se a condição fosse retries >= 1, a função fn seria executada novamente mesmo na última tentativa, o que não é desejado.

Espero ter ajudado a esclarecer sua dúvida!

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software