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

Как правильно написать цепочку promise для элементов в forEach?

Код ниже для каждого элемента создаёт независимый промис. А как из элементов сделать цепочку?
document.querySelectorAll('li').forEach( function(li) {
      new Promise(function(resolve) {
        setTimeout( () => resolve(console.log(li.textContent)), 1000);
        })
})
  • Вопрос задан
  • 112 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const asyncForEach = (data, callback) =>
  Array.prototype.reduce.call(
    data,
    (promise, n, i, a) => promise.then(() => callback(n, i, a)),
    Promise.resolve()
  ).then(() => {});

// или

async function asyncForEach(data, callback) {
  for (let i = 0; i < data.length; i++) {
    await callback(data[i], i, data);
  }
}

asyncForEach(
  document.querySelectorAll('li'),
  li => new Promise(r => setTimeout(() => r(console.log(li.textContent)), 1000))
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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