@Demon14589

Почему цикл выполняется не так, как планировалось?

Есть код:
let i = 0;
do {
  i += 1;
setTimeout(function(){
  КОД
}, 10000);
} while (i < 3);

Но он выполняется 3 раза через 10 секунд ожидания, а хотелось бы чтобы между каждым выполнением было 10 сек ожидания. Не подскажете, в чём проблема?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
@jenya92
Как вариант, можно сделать вот так. Но тут будет бесконечный цикл. Нужно добавить условие, при котором цикл прерывается.
let fun = function(){
        console.log("step");
    };
setInterval(fun, 1000);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
imko
@imko
Senior Scratch Developer
Ты просто поставил три таймаута на 10 секунд. Они не останавливают выполнение, читай async
Ответ написан
Комментировать
@GrayHorse
Использую постоянно.

function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

for (let i = 0; i < 3; i++) {    
    await sleep(1000);
    console.log(i);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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