I Shar

I Shar

мир глазами веб-разработчика

Замедляем цикл

замедляем выполнение итераций цикла в JavaScript

I Shar

время чтения 1 мин.

Photo by Krzysztof Niewolny on Unsplash

Допустим, у нас есть цикл, цель которого - многократное обращение к стороннему API. При этом, API ограничивает количество обращений за единицу времени. И, даже если таких ограничений со стороны внешнего сервиса нет, значительное количество запросов в течение короткого промежутка времени - очень плохая идея.

Как результат, для успешного выполнения такой задачи нужно замедлить выполнение каждой итерации цикла.

Оказывается сделать это очень просто.

Достаточно создать функцию sleep():

const sleep = (milliseconds) => {
  return new Promise(resolve => setTimeout(resolve, milliseconds))
}

и дописать в цикле await sleep(1000), чтобы задержать каждую итерацию на одну секунду.

Конечный код будет выглядеть примерно так:

const list = [1, 2, 3, 4];
const doSomething = async () => {
    for (const item of list) {
        await sleep(1000);
        /* Какой-то код */
    }
}
doSomething();


Спасибо за внимание.


Перевод статьи “How to slow down a loop in JavaScript”.

    • frontend
    • js

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.