Вы можете использовать .map
, но вам нужно сопоставить каждый асинхронный вызов с Promise
. Затем вы можете вызвать Promise.all
для результата, который разрешится, когда все Обещания в переданном массиве разрешатся.
Нет смысла в асинхронной функции, которая сразу return await
что-то - это уже Promise
, и await
не сделает ваш код более плоским или более читабельным в этой ситуации.
Итак, вы можете использовать:
const allPromises = x.map(operation);
const resultsOfOperations = await Promise.all(allPromises);
// resultsOfOperations will be an array with the resolved values
Предполагается, что operation
принимает один параметр. В противном случае вам придется явно передавать его каждый doc
, чтобы избежать установки второго и третьего параметров в качестве индекса итерации и базового массива.
const allPromises = x.map(doc => operation(doc));
const resultsOfOperations = await Promise.all(allPromises);
// resultsOfOperations will be an array with the resolved values