gpt4 book ai didi

javascript - 无法在异步函数内分配对象属性

转载 作者:行者123 更新时间:2023-12-01 02:37:25 25 4
gpt4 key购买 nike

我有一个异步函数,我在其中使用await 来返回一个对象。

async function createProductsArray(products, numberOfDays) {
if (!products) return [];

var productsArray = [];

for (var i = products.length - 1; i >= 0; i--) {
var product = await productController.read_product(products[i]);

if (product) {
product.total_price = productController.calculate_product_price(product, numberOfDays);
productsArray.push(product);
}
}

console.log(productsArray);
return productsArray;
}

函数计算产品价格:

exports.calculate_product_price = function (product, days) {

if (days && product.selling_type == 'rental') {
return product.price * days;
}
else {
return product.price;
}

}

由于某种原因,我无法将属性total_price分配给产品。它不会出现在该函数的返回对象上。我尝试用“test”之类的静态值替换属性值,并且检查了该对象是否可变(确实如此)。

有什么想法为什么这行不通吗?我怀疑这与异步函数内发生的所有这些事情有关,但我真的无法弄清楚为什么。

函数执行应该停止,直到等待productController.read_product()返回一个值,所以这应该可以正常工作吗?

最佳答案

您有 2 个async 函数。你需要等待他们两个。我假设你正在做这样的事情:

console.log(myProducts, 7);

...代码中的某处,日志显示它为空。但您还需要将其包装在 await 中,因为 createProductsArray 也是异步的:

await console.log(myProducts, 7);

关于javascript - 无法在异步函数内分配对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47794650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com