Blog do Matheus Castiglioni | Limitando Execucao De Funcao Com Takeuntil
Geralmente durante o uso de softwares muitas funções devem/são executadas, indo um pouco mais além, dificilmente você irá ver um sistema (seja web ou desktop) que não possua pelo menos uma função.
Imagine que estamos trabalhando em um sistema na web (webapp), nosso sistema é para cadastro de pacientes, uma das nossas funcionaldiades é realizar a importação de dados de uma fonte externa (outro sistema), sabendo disso, nosso cliente pediu que a função de exportação só pudesse ser executada uma vez. Caso a mesma foi executada, ela não pode mais ser disparada, como podemos criar essa nova funcionalidade e resolver o problema do nosso cliente?
Para esse problema podemos implementar nossa própria takeUntil, ela será uma função responsável por executar determinada função até uma certa quantidade de vezes (definida via parâmetro). Podemos começar criando nossa takeUntil:
times: Quantidade de vezes que uma determinada função poderá ser executada.
fn: A função que será executada até uma determinada quantidade de vezes.
Repare que criamos uma função chamada importarDados que apenas irá logar uma mensagem simulando a importação de dados. Depois, fizemos o uso da nossa função takeUntil para criarmos uma nova função, agora com sua execução limitada em apenas uma única vez (pois passamos o primeiro parâmetro como 1).
Nada irá acontecer, porque? Isso acontece porque nossa função takeUntil ainda não foi implementada, está apenas retornando uma função que nada faz.
Chega de mais delongas e vamos ao que interessa e implementar a função takeUntil, ela deverá funcionar da seguinte maneira:
Verificar se a quantidade de execução não foi atingida.
Caso ainda não foi atingida, execute ela.
E por último, diminua o número de vezes que ainda podemos executá-la.
Com o passo anterior feito, garantimos que nossa função apenas irá executar quando ainda puder, apenas trocamos o comentário anterior pela chamada da função:
Pronto, nossa função apenas irá ser executada onde nossa condição é verdadeira, ou seja, a quantidade (times) de vezes ainda é maior do que zero.
Maravilha, tudo deve estar funcionando, vamos testar?
Aqui pedimos para nossa função ser executada cinco vezes, mas, só iremos ver a mensagem no console uma única vez.
Mas, ainda não podemos comemorar, vamos dar uma olhada no código final (até então) da função takeUntil.
Está muito verboso, será que não podemos melhorá-lo? Sim, podemos deixá-lo bem menor e mais simples:
Feito, em apenas uma linha realizamos todos os passos anteriormente destacados.
Realizamos a criação/implementação da função takeUntil, com ela conseguimos limitar a execução de uma determinada função até uma certa quantidade de vezes.
E aí, você já conhecia a função takeUntil? Não deixe de comentar. Se você gostou desse post fique á vontade para assinar a newsletter e receba novidades por email.