@pacan4ik

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

Есть цикл
for(let i = 0; i < 440; ++i) {...}
Как нам его выполнить за 4 секунды, делая перерыв на секунду каждые 100 циклов и каждую остановку выводить по 100, а в конце 40, как остаток.
  • Вопрос задан
  • 136 просмотров
Решения вопроса 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)
        }
    }
}())
Используя генераторы
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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