@MasterCopipaster

Как дождатся завершения кода js в setInterval?

var run = function () {
  let count = 0;
  let adata = 5;
  let intervalId = setInterval( () => {
    console.log('setInterval run')
    count++;
    if (count === 10) {
      clearInterval(intervalId);
    }
    if (true) {
        let adata_clicl = setInterval(() => {
          adata--;
          console.log('adata decrement')
          if (adata === 0) {
            clearInterval(adata_clicl);
          }
        }, 3000);
    } else {
      console.log('false');
    }
  }, 5000);
}

Подскажите пожалуйста, у меня функция let intervalId не дожидается выполнения let adata_clicl
И они начинают в какой то момент работать параллельно. я хотел бы что бы intervalId ждал пока выполнится adata_clicl и только потом продолжал работу. Я понимаю что тут надо что то придумать с async await - но в ходе эксперементов я так и не понял как это сделать, и не чего кроме нервного тика не получил. Подскажите как заставить ждать всю функцию пока не выполнится
let adata_clicl = setInterval(()
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
@GrayHorse
Вот.
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}


В большинстве случаев для работы с таймером достаточно лишь этой функции.

for (let i = 0; i < 10; i++) {
    for (let j = 5; j > 0; j--) {
        console.log(i, j);
        await sleep(500);
    }
    await sleep(2000);
}

С помощью которой можно писать простой и понятный код.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Интервал не будет ждать, он будет запускать задачу каждые 3 и 5 секунд в твоем случае.
Это базовые знания яваскрипт, без них ты в трех соснах запутаешся.
Максимум чего можно добиться с интервалом - пропускать его если в этот момент он не должен выполняться.
Если ты хочешь управлять отложденным запуском, используй рекурсивный setTimeout.
Можно комбинировать рекурсивный setTimeout Promise async await
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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