Я бы использовал ваш пример кода в моем примере, но у вас нет закрывающей скобки в вашей функции, поэтому я не совсем уверен, как это должно выглядеть ... вот общий пример концепции ...
отаю над инструментом анимации светодиодных полос, который позволяет пользователю выбирать несколько эффектов, которые могут работать одновременно. Каждый эффект - это (синяя птица) Обещание. Есть одинrun()
метод, который устанавливает цвет светодиодной ленты.
Все обещания выполняются с фиксированным FPS с использованиемdelay
метод.
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()
Есть ли какая-то структура данных, которую я могу использовать, чтобы включать и выключать рекурсивное обещание? Другими словами, как я могу дать сигнал (рекурсивное обещание) прекратить повторение?
Я думал о массиве, содержащем все обещания. Но тогда я не знаю, как разбить / разрешить рекурсивное обещание, когда его больше нет в массиве. Я мог бы сделать проверку, прежде чем яreturn
находится ли само обещание внутри массива, но я надеялся, что был более элегантный способ.