Задать вопрос
@pacan4ik

Как каждые 100 выполнений цикла, сделать timeOut и продолжить его, пока не завершится?

Есть цикл
for(let i = 0; i < 440; ++i) {...}
Как нам его выполнить за 4 секунды, делая перерыв на секунду каждые 100 циклов и каждую остановку выводить по 100, а в конце 40, как остаток.
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для асинхронности должна быть другая логика. Нет цикла, есть функция, которая выводит очередные 100 элементов и, если элементы ещё остались, устанавливает таймер на вызов себя через заданное время.
const foo = () => {
  const max = 439;
  let counter = 0;
  const next100 = () => {
    for (let i = 0; i < 100 && counter <= max; i += 1, counter += 1) {
      console.log(counter);
    }
    if (counter !== max) {
      setTimeout(next100, 4000);
    }
  }
  setTimeout(next100, 0);
}
foo();
Ответ написан
Комментировать
VlasenkoFedor
@VlasenkoFedor
Программист: php, js, go
function* test() {
    for (let i = 1; i < 440; ++i) {
        yield i;
    }
}

const x = test();
(function start() {
    let r, v;
    while (r = x.next()) {
        if (r.done) break
        v = r.value + 1
        if (v % 100 === 0) {
            console.log(v)
            return setTimeout(start, 1000)
        }
    }
}())
Используя генераторы
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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