将SubCategories添加到Categories数组

时间:2019-04-09 10:30:28

标签: javascript

我有一个Category对象,每个CategorySubCategories。为每个Category的{​​{1}}加载正确的方法是什么?

SubCategories

1 个答案:

答案 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.
}]