Ваша проблема в том, что getMetaPerArticle
возвращает Обещание, поэтому вам нужно добавить await
вместо него и отметить функцию стрелки как async
.
const parsedEnDataWithMeta = parsedEnData.map(async article => {
const mergedArticleWithMeta = {
...article,
...await getMetaPerArticle(article.id)
};
return mergedArticleWithMeta;
});
После этого parsedEnDataWithMeta
будет содержать список Обещаний, поэтому вам нужно будет подождать, пока все они не будут решены с помощью Promise.all
:
const parsedEnDataWithMeta = await Promise.all(parsedEnData.map(async article => {
const mergedArticleWithMeta = {
...article,
...await getMetaPerArticle(article.id)
};
return mergedArticleWithMeta;
}));
Если вам нужно использовать это чаще, вы можете определить функцию карты, которая будет обрабатывать обещания:
function promiseMap( array, callback ) {
return Promise.all(array.map(callback))
}
const parsedEnDataWithMeta = await promiseMap(parsedEnData, async article => {
const mergedArticleWithMeta = {
...article,
...await getMetaPerArticle(article.id)
};
return mergedArticleWithMeta;
});