Замедляем цикл
замедляем выполнение итераций цикла в JavaScript
Допустим, у нас есть цикл, цель которого - многократное обращение к стороннему 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”.