Задать вопрос
@jeruthadam
Я крут

Как выполнять асинхронную функцию с интервалом?

Есть асинхронная функция (в реале это запрос на сервер). Нужно выполнять эту функцию, дожидаться ее окончания и делать перерыв в несколько секунд (желательно рандомно). Попробовал такое. но это работает некорректно

let currentNumber = 1

function processNumber (number) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve(number)
    }, 3000)
  })
}

setInterval(async () => {
  const p = await processNumber(currentNumber)
  console.log(p)
  currentNumber++
}, 3000)


6 секунд интервал соблюдается только в первый раз. В последующие вызовы перерыв только 3 секунды.

Как делать паузу между вызовами асинхронной функции?
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 1
@StockholmSyndrome
можно рекурсивным setTimeout'ом
async function send() {
  const p = await processNumber(currentNumber); 
  console.log(p);  
  currentNumber++; 
  setTimeout(send, 3000);
}
send();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы