オブジェクトを返すために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;
}
機能calculate_product_price:
exports.calculate_product_price = function (product, days) {
if (days && product.selling_type == 'rental') {
return product.price * days;
}
else {
return product.price;
}
}
何らかの理由で、私は、製品にプロパティTOTAL_PRICEを割り当てることはできません。この関数の返されたオブジェクトには表示されません。私はプロパティ値を 'test'のような静的な値で置き換えようとしましたが、オブジェクトが変更可能かどうかを確認しました。
これはなぜ機能しないのでしょうか?私はそれが非同期関数の中で起こっているこのすべてのものと何か関係があると思うが、私は本当に理由を理解することはできない。
functionController.read_product()が値を返すまで、関数の実行は停止されているはずなので、正しく動作するはずです。
あなたは 'productController.calculate_product_price()投稿していなかった'そうだね – Pointy
、私はそれを掲載しました。 :-) – NvdB31
既に待っていて、製品のコンソールログをやりましたか? –