@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 секунды.

Как делать паузу между вызовами асинхронной функции?
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
@StockholmSyndrome
можно рекурсивным setTimeout'ом
async function send() {
  const p = await processNumber(currentNumber); 
  console.log(p);  
  currentNumber++; 
  setTimeout(send, 3000);
}
send();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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