代码之家  ›  专栏  ›  技术社区  ›  m m

获取未定义或承诺{<pending>}尝试推送到数组[重复]

  •  0
  • m m  · 技术社区  · 2 年前

    在下面的代码中,我在SSR页面中推送数组时遇到问题。

        let categories = []
    
        categories = await axios.get(`http:/.../${price_list_name}`).then(res => {
            return res.data
        })
    
        const child_categories = categories.related.category_childs.hits.hits
        const childs_en_names = []
        if (child_categories.length > 0) {
            for (var doc in child_categories) {
                childs_en_names.push(child_categories[doc]._source.en_name)
            }
        }
    
        const get_products = async (en_name) => {
            await axios.get(`http://.../${en_name}`).then(res => {
                let data = {
                    "en_name": en_name,
                    "products": res.data.related.childs_products
                }
                return data
            })
        }
    
        const products = await Promise.all(childs_en_names.map(en_name => get_products(en_name))) 
    
    
        // logging
        // console.log(categories.products, 'props')
        console.log(products, 'products')
    

    科索尔。log(products,'products')返回未定义或承诺{}。我搜索了很多,但都没有成功。

    任何帮助都将不胜感激。

    1 回复  |  直到 2 年前
        1
  •  1
  •   jonrsharpe The6thSense    2 年前

    你不能从我这里退回任何东西 get_products .没有必要使用 async / await 如果你要用 then 也这有点违背了这一点。

    const get_products = async (en_name) => {
      const res = await axios.get(`http://.../${en_name}`);
      const data = {
        en_name: en_name,
        products: res.data.related.childs_products
      }
      return data;
    }