Execute várias promessas recursivas e quebre quando solicitado
Estou trabalhando em uma ferramenta de animação de faixa de LED que permite ao usuário selecionar vários efeitos que podem ser executados simultaneamente. Cada efeito é uma promessa (pássaro azul). Existe um únicorun()
método que define a cor da faixa de LED.
Todas as promessas são executadas em um FPS fixo usando odelay
método.
run(mode) {
return this.setStripColor(this.color).delay(1 / this.fps).then(() => { this.run(1 / this.fps) })
}
// example of an effect
rainbowSweep() {
// ..
// magical unicorn code
// ..
return Promise.resolve().delay(1 / this.fps).then(() => {
this.rainbowSweep()
})
app.rainbowSweep()
app.run()
Existe algum tipo de estrutura de dados que eu possa usar para ativar e desativar uma promessa recursiva? Em outras palavras, como sinalizo para que o efeito (a promessa recursiva) pare de se repetir?
Eu estava pensando em uma matriz contendo todas as promessas. Mas não sei como quebrar / resolver uma promessa recursiva quando ela não está mais na matriz. Eu poderia fazer uma verificação antes dereturn
se a promessa em si está dentro da matriz, mas eu esperava que houvesse uma maneira mais elegante.