@Bezlepkin
Yii, PHP, JS, Android

Как в Javascript сделать рекурсию с промисом?

Нужно сделать функцию рекурсивную с промисом.

function a () {
  b().then(() => {})

  function b () {
    return new Promise((resolve, reject) => {
      for (let i = 0; i < 10; i++) {
        if (i < 10) {
          b()
        } else {
          resolve(true)
        }
      }
    }
  }
}
  • Вопрос задан
  • 441 просмотр
Пригласить эксперта
Ответы на вопрос 2
mbelskiy
@mbelskiy
Software Developer
if (i < 10) {
    b().then(() => resolve(true))
} else {


Но только учтите что текущая реализация уйдет в "бесконечную" рекурсию
Ответ написан
Комментировать
/** Возвращает случайное целочисленное число*/
const randomInt = (min, max) => {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
/** Для ожидания */
const delay = (ms) => {
    return new Promise(resolve => setTimeout(resolve, ms));
}

let counter = 0;

/** Рекурсивный промис */
const test = () => {
    return new Promise( resolve => {
        let random = randomInt(300, 1800);
        delay(random).then(() => {
            counter++;
            console.log("Counter:", counter, "Random:", random);
            resolve(test());
        })
    })
}
test()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы