2
respostas

Função Retry

FIquei com uma dúvida na invocação da função dentro do Delay atividade 08 da aula 05. No recho específico do código

.. .return delay(millisecons)( ).then ...

Pelo vídeo entende-se que o segundo "( )" é usado para chamar a imediatamente função que está dentro do "delay", no caso o resolve da promise anterior, sem esperar o setTimeout. Isso é uma técnica comum para chamar funções dentro de outras funções o uso do segundo parenteses ? É uma outra forma de usar um segundo parâmetro em uma função? Vocês teriam algum artigo que possam passar sobre esse uso do segundo parenteses na chamada de função para que fique mais claro quando e como utilizar?

Desculpem se não fui muito claro na pergunta, mas esses dois parentese juntos "( ) ( ) " na chamada da função me deixou um pouco confuso.

Obrigado.

Função retry completa:

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

Fala ai Leo, tudo bem? Bom, vamos lá:

Desculpem se não fui muito claro na pergunta, mas esses dois parentese juntos "( ) ( ) " na chamada da função me deixou um pouco confuso.

Essa técnica é chamada de Currying, técnica conhecida da programação funcional.

Dá uma olhada no post:

https://tableless.com.br/programacao-funcional-em-javascript-implementando-curry-e-compose-com-bind-e-reduce/

Espero ter ajudado.

Oi Matheus, obrigado, vou ler o artigo.