@jeruthadam
Я крут

Асинхронные операции в reduce?

Переписываю код с map на reduce, т.к. нужен на выходе не массив, а объект.

const jobQueue = ['one', 'two']

const foundJobs = jobQueue.reduce(async (obj, queue) => {
      const delayedJobs = await backgroundJobs[queue].getJobs(['delayed']);
      const waitingJobs = await backgroundJobs[queue].getJobs(['waiting']);
      const completedJobs = await backgroundJobs[queue].getJobs(['completed']);
      const activeJobs = await backgroundJobs[queue].getJobs(['active']);
      obj[queue] = {
        active: activeJobs,
        completed: completedJobs,
        waiting: waitingJobs,
        delayed: delayedJobs,
      };
      return obj;
    }, {});


С мапом было все ок, я просто дожидался результата await Promise.all(foundJobs). С reduce это не работает, потмоу что объект на выходе. Как решить эту задачу?
  • Вопрос задан
  • 233 просмотра
Пригласить эксперта
Ответы на вопрос 2
SagePtr
@SagePtr
Еда - это святое
Сделать Promise.all(map), а к полученному результату уже применить синхронный reduce.
Ответ написан
Использовать reduce с грязной функцией - дурной тон. Просто напишите for-of цикл вместо reduce
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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