@jeruthadam
Я крут

Как сделать таймаут в цикле?

Есть асинхронная функция (которая качает картинку), есть массив данных с ссылками. Надо последовательно выполнять запросы (не одновременно) и делать таймаут между ними.

Для прохода по массиву использую for...of. Но как сделать таймаут между вызовами функции? Внутри цикла не работает setTimeout (все выполняется наоборот одновременно)

for (const item of array) {
  await processImage(image, name)
}
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Внутри цикла не работает setTimeout

Работает, если завернуть его в промис и await'ить:

(async () => {
  const data = [ 1, 2, 3, 4, 5 ];
  for (const n of data) {
    console.log(n);
    await new Promise(r => setTimeout(r, 1000));
  }
})();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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