@gomerIT

Как в NodeJS выполнить setTimeOut внутри while?

Делаю запрос на сервер и получаю ответ, при определенном значений я должен выполнить запрос на сервер повторно, но немного подождать перед этим. Мой код почему то работает не так, как я хотел.
let code = await sms.getStatus(id);

  if (code.status === 'error') {
    console.log(code.message);
  }

  while (code.status === 'warn') {
    console.log('Код еще не пришел, жду 7 секунд');
    setTimeout(async () => {
      code = await sms.getStatus(id);
    }, 7000);
  }

Подскажите, как можно решить эту задачу или какое нибудь другое решение?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@gomerIT Автор вопроса
Спасибо Василию за подсказку. Написал данную функцию
sleep = (timeout) => new Promise((resolve) => setTimeout(resolve, timeout));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
setTimeout выполняется асинхронно.
Решить вы это можете двумя способами:
1. Отказаться от цикла и использовать рекурсию
2. Завернуть setTimeout в промис и использовать await
(Пример напишу чуть позже)
Ответ написан
Ваш ответ на вопрос

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

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