Esse artigo será apenas a introdução à esse conceito que me veio como uma solução específica para o uso
de temporizadores como setInterval
.
Esse código foi feito para rodar no BACKEND com Node.js > 8.9
Imagine que você precisam receber um objeto do setInterval
para poder cancelar, porém você quer
cancelar ele DENTRO do callback do setInterval
, que só retorna o objeto necessário
quando você CRIA o setInterval com callback e o time.
const func = () => {}
const interval = setInterval(func, 1000)
console.log(interval)
const func = () => {
// preciso cancelar o setInterval aqui dentro
if(something) clearInterval(interval)
}
const interval = setInterval(func, 1000)
console.log(interval)
No artigo completo explicarei melhor o porquê desse nome e espero achar mais usos fora o setInterval
, por hora
eu resolvi da seguinte forma:
const cb = () => { console.log('cb') }
const interval = setInterval(cb, 1000)
const lazy = () => {
console.log('lazy')
// preciso cancelar o setInterval aqui dentro
// if(something) clearInterval(interval)
}
interval._onTimeout = lazy
Como eu cheguei nessa solução explicarei detalhadamente ainda esse mês, mas basicamente o que eu fiz foi:
- Criar setInterval com um callback padrão que não será executado.
- Criar o lazy callback, o qual aproveita-se do acesso ao objeto retornado.
- Definir o lazy callback na proprieda
_onTimeout
. - Pronto.
Vou deixar aqui um exemplo deverás simples dessa prova de conceito: