gpt4 book ai didi

javascript - 不确定如何解决未决的 promise ?

转载 作者:行者123 更新时间:2023-12-05 06:55:29 25 4
gpt4 key购买 nike

我正在循环访问一些数据并获取单个导航项。

如果我在 getNavItems 函数中的 return 之前 console.log(navItems),它会记录我期望的一切。

但是,如果我在返回之前在 getFooterData 中记录 footerData,返回时我会在项目中返回一个 Unresolved promise

[
{ heading: 'Heading 1', items: Promise { <pending> } },
{ heading: 'Heading 2', items: Promise { <pending> } },
{ heading: 'Heading 3', items: Promise { <pending> } },
]

我期待的是:

[
{ heading: 'Heading 1', items: [ {data: 1}, {data: 2}, {data: 3} ] },
]
const getNavitems = async (navItemList) => {
const navItemIds = navItemList.map(({ sys: { id } }) => id);

const navItemData = await Promise.all(
navItemIds.map((id) => client.getEntry(id))
);

const navItems = navItemData.map((item) => item.fields);

return navItems;
};

const getFooterData = async () => {
const footerDataCollection = await client.getEntry('abcxyz123');

const footerData = Object.entries(footerDataCollection.fields.sections).map(
(item) => {
return {
heading: item[1].fields.heading,
items: (() => getNavitems(item[1].fields.item_list))()
};
}
);

return footerData;
};

任何帮助都会很棒,因为我已经为此苦苦思索了几个小时!

最佳答案

使用循环的解决方案。 (Array.prototype.map 对于 await 很棘手)

我还没有测试过这个,因为我没有办法去做。

const getNavitems = async (navItemList) => {
const navItemIds = navItemList.map(({ sys: { id } }) => id);

const navItemData = await Promise.all(
navItemIds.map((id) => client.getEntry(id))
);

const navItems = navItemData.map((item) => item.fields);

return navItems;
};

const getFooterData = async () => {
const footerDataCollection = await client.getEntry('abcxyz123');

const footerData = Object.entries(footerDataCollection.fields.sections);

const items = await Promise.all(footerData.map(item => getNavitems(item[1].fields.item_list)));

for (let i = footerData.length; i--;) {
footerData[i] = {
heading: footerData[i][1].fields.heading,
items: items[i]
}
}

return footerData;
};

关于javascript - 不确定如何解决未决的 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65332196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com