Изменить рекурсивный. Затем на асинхронный / ожидание

1

У меня есть js рекурсивный fn, как это

const recur = () => {
  fetchSomething().then( res => {
    if(typeof res.data == 'undefined'){ recur() }
    else { console.log(res.data) }
  })
}
recur()

Могу ли я применить выше код к стилю Async/Await?

Теги:
async-await
promise
ecmascript-next

1 ответ

1

torazaburo и robertklep оба по праву рекомендуют использовать время вместо этого, чтобы достичь этого. Я добавляю комментарии здесь, поэтому они не пропущены, так как они делают хорошие очки.

ИМХО должно быть предпочтительным нерекурсивным решением. Характер обещаний, а then своего рода требует псевдорекурсивного решения, но одним из больших преимуществ await является то, что он позволяет писать асинхронный код синхронно.


const recur = async () => {
    const res = await fetchSomething();

    if (!res.data)
        recur();
    else
        console.log(res.data);
}

Что-то вроде этого должно сделать трюк.

демонстрация

  • 1
    Или используйте while цикл вместо рекурсии.
  • 1
    Да, это будет работать также. Некоторая форма максимального повторного попытки была бы хорошей идеей, и период отдыха, вероятно, также не повредил бы.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню