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

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

Войти через центр авторизации
Похожие вопросы
Александрия Москва
от 200 000 до 250 000 руб.
Foodtronics Москва
от 100 000 до 200 000 руб.
Алгоритмика Москва
от 120 000 до 200 000 руб.
21 авг. 2019, в 00:43
500 руб./за проект
21 авг. 2019, в 00:14
1000 руб./за проект