DigitalConsumer.FixMyGlass/src/helpers/layout-helper.js
2022-04-14 11:08:57 -04:00

27 lines
853 B
JavaScript

export function settleAllPromises(promiseResultMap) {
// Pull our keys out of the promise 'table'
const promiseNames = Object.entries(promiseResultMap);
return Promise.allSettled(
promiseNames.map((e) => e[1]).map((n) => n.promise)
).then((results) => {
const resultMap = {};
// Build a map of the results
for (let i = 0; i < results.length; ++i) {
const promiseName = promiseNames[i][1].resultKey;
// Some Promises like the cms content call don't have a 'data' field
// when returned, so other promises do. Map the results to the object
// so that the object is the return data.
if (results[i]?.value?.data === undefined) {
resultMap[promiseName] = results[i]?.value;
} else {
resultMap[promiseName] = results[i]?.value?.data;
}
}
return resultMap;
});
}