riddlr
@riddlr

Как использовать map с async/await?

К примеру, есть такой код

files.map(file => {
  console.log(file)
  setTimeout(() => {
      console.log('TIMEOUT!!!')
    }, 2000)
})
console.log('END OF EXEC')


Как дождаться выполнения map, при этом используя не промисы, а async/await?
  • Вопрос задан
  • 402 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Что значит "не промисы, а async/await"? - async/await это тоже промисы.

Используйте await Promise.all, например:

const result = await Promise.all([ 1, 2, 3 ].map((n, i) => {
  return new Promise(resolve => {
    setTimeout(() => {
      console.log(`timeout #${i}`);
      resolve(n * 10);
    }, Math.random() * 3000 | 0);
  });
}));

console.log('result:', result);
Ответ написан
@qq1
const {map} = require('p-iteration')
const {promisify} = require('util')
const timeout = promisify(setTimeout)

let files = [1, 2, 3, 4, 5]

async function foo () {
  await map(files, async file => {
    console.log(file)
    await timeout(2000)
    console.log('TIMEOUT!!!')
  })
  console.log('END OF EXEC')
}

foo()
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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