我有一个Category
对象,每个Category
有SubCategories
。为每个Category
的{{1}}加载正确的方法是什么?
SubCategories
答案 0 :(得分:1)
这是一种简单但次优的方法,因为它缺乏异步性。
const categories = getCategories().map(category => {
return {
category
, subCategory: getSubCategories(category.catId)
}
})
更好的方法是将await
中的getSubCategories
删除,然后让其返回承诺。
const getSubCategories = async catId => axios.get(`../api/SubCategories/GetSubCategories?catId=${catId}`)
当您返回承诺时,它们可以异步运行。
const categories = getCategories()
如果您使用的是异步功能,则可以执行以下操作:
const subCategories = await Promise.all(categories.map(category => getSubCategories(category.catId))
const categoriesWithSub = zipWith(categories, subCategories, (category, subCategory) => ({category, subCategory}))
否则
Promise.all(categories.map(category => getSubCategories(category.catId))
.then(subCategories => {
const categoriesWithSub = zipWith(categories, subCategories, (category, subCategory) => ({category, subCategory}))
})
categoriesWithSub
是具有以下形状的对象数组。
[{
category: {} // however your original category object looked like.
, subCategory: [] // The array of subCategories for this category.
}]