Вам понадобится два Promise.all
с - один для каждого отдельного элемента, а затем другой для массива этих Promise.all
с.Когда Promise.all
для всего массива разрешается, вы можете .map
его результаты в массиве объектов, которые вы хотите:
const arrayOfProms = nestings.map(nesting => Promise.all([
getFirstDataFromDB(),
getSecondDataFromDB(),
getThirdDataFromDB()
]));
const arrOfData = await Promise.all(arrayOfProms);
const array = arrOfData.map(
([data1, data2, data3]) => ({data1: data1, data2: data2, data3: data3})
);
Пример фрагмента:
const getData = () => new Promise(res => setTimeout(res, 200, 'someval'));
const nestings = ['foo', 'bar', 'baz'];
(async () => {
const arrayOfProms = nestings.map(nesting => Promise.all([
getData(),
getData(),
getData()
]));
const arrOfData = await Promise.all(arrayOfProms);
const array = arrOfData.map(
([data1, data2, data3]) => ({data1: data1, data2: data2, data3: data3})
);
console.log(array);
})();