Я бы использовал ваш пример кода в моем примере, но у вас нет закрывающей скобки в вашей функции, поэтому я не совсем уверен, как это должно выглядеть ... вот общий пример концепции ...

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

Ответы на вопрос(3)

Ваш ответ на вопрос