forEach 中的推送对象在地图查看端为空

Pushed object in forEach is empty at the map look end

我希望从 forEarch 中推送对象,在获取 forEarch 中的数据后,console.log 显示正确的值并且对象已正确推送到数组。

但是在 forEach 的末尾,如果我尝试访问推送的对象,则数组中没有对象

下面的代码

async function get_line_items(items) {
              
            line_items2 = [];

            await items.forEach((element, index) => {

                const id = element.id;
            
                if (id) {

                    await getPriceFromCartCheckout(id, (err, results) => {
                        if (err) {
                            console.log(err);
                            return;
                        }

                        if (results && !isEmpty(results)) {
                            // Add new item
                            line_items2.push({
                                name: element.name,
                                amount: results[0].price,
                                currency: "eur",
                                quantity: element.quantity,
                            })

                        }
                        console.log(line_items2) // => Here objects are properly added to the array on each loop
                    });
                }

            })
            console.log(line_items2) // => Here the array is empty.
            return line_items2;
          }

          const line_items = await get_line_items(req.body[1].items);

          console.log( line_items); // => Here the array is empty.


module.exports = {
getPriceFromCartCheckout: async (id) => {

        return await pool.query(`SELECT volume, price FROM products WHERE id = ?`, [ 
            parseInt(id)
        ])
        .then(iuidtest => {
            return iuidtest;
        });
    },
};

任何帮助将不胜感激:)

在这里找到了解决方案:

您应该等待 getProductIdWeightPrice 而不是循环本身。循环做了它应该做的事——循环数组,调用一些外部方法。这些方法的作用 - 循环不关心。

为了“暂停”循环,您需要等待异步调用来获取数据。这样做它会起作用:)