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

Асинхронный генератор и обещание массив?

async function* promisGenerator(arrPromise) {}  //???

const promisList = [
  new Promise(resolve => setTimeout(resolve(15), 200)),
  new Promise(resolve => setTimeout(resolve(17), 600)),
  new Promise(resolve => setTimeout(resolve(42), 500))
];

(async () => {
  const asyncGenerator = promisGenerator(promisList);
  for await (let value of asyncGenerator) {
    console.log(value); // 17, 42, 15,
  }
})();


У меня есть обещание массива. Я должен написать асинхронный генератор promisGenerator, который будет возвращать значение в порядке убывания. 17, 42, 15Пожалуйста, помогите написать генератор promisGenerator.
  • Вопрос задан
  • 138 просмотров
Подписаться 2 Средний 10 комментариев
Решения вопроса 1
@StockholmSyndrome
обратите внимание, что в setTimeout нужно передавать resolve, а не результат её вызова
const promiseList = [
  new Promise(resolve => setTimeout(resolve, 200, 15)),
  new Promise(resolve => setTimeout(resolve, 600, 17)),
  new Promise(resolve => setTimeout(resolve, 500, 42))
];


async function* promiseGenerator(arrPromise) {
  const result = []; 
  const push = (val) => result.push(val);

  const promises = arrPromise.map((promise) => promise.then(push));
  await Promise.all(promises); 

  for (let i = result.length - 1; i >= 0; --i) {
    yield result[i];
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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