我正在编写一个函数,通过查询数据库获取价格,然后将其乘以数量来计算总金额。它对数组中的每一项执行此操作,并将总数推送到一个数组,然后将其减少为返回的最终总数。函数如下图所示:
const calculateOrderAmount = async (items: cartProduct[]): Promise<number> => {
const priceArray: number[] = [];
items.forEach(async (p: cartProduct) => {
const product = await Product.findById(p.prodId).exec();
if (product) {
const totalPrice = product.price * p.quantity;
priceArray.push(totalPrice)
} else return;
});
let amount;
if (priceArray.length === 0) amount = 0;
else amount = priceArray.reduce((a, b) => a + b);
return amount;
};
我遇到的问题是它的异步性。我希望它等待forEach完成,但由于它是异步的,它会继续执行函数的其余部分,因此最终返回 0。有没有办法让它等待完成forEach?或者我应该以不同的方式重写它
蛊毒传说
慕姐8265434
相关分类