优化这段代码” data: { goodsObj: {}, goods_id: null }, onLoad({ goods_id }) { console.log(goods_id); this.setData({ goods_id }); this.getGoodsDetail(); }, async getGoodsDetail() { try { const { goods_id } = this.data; const [goodsObj] = await Promise.allSettled([ request({ url: "/goods/detail", data: { goods_id } }) ]); if (goodsObj.status === "fulfilled") { console.log(goodsObj.value); this.setData({ goodsObj: goodsObj.value }); } else { throw new Error(goodsObj.reason); } } catch (error) { console.error(error); // 处理错误的方式,例如提示用户网络异常等信息 } this.setData({ goodsObj:{ goods_name:goodsObj.goods_name, goods_price:goodsObj.goods_price, goods_introduct:goodsObj.goods_introduct, pics:goodsObj.pics, } }) },“
时间: 2023-12-17 12:02:01 浏览: 101
首先,需要注意的是,`Promise.allSettled` 返回的是一个数组,而不是一个对象,所以需要使用数组解构来获取 `goodsObj` 的值。
其次,`setData` 是一个异步操作,需要等待前一个异步操作完成后再进行下一步操作。所以需要将 `setData` 放在 `getGoodsDetail` 中 `if` 语句的后面,即异步操作成功后才执行 `setData` 操作。
最后,需要注意的是,`goodsObj` 是一个对象,包含多个属性,需要将每个属性单独设置到 `setData` 中。
修改后的代码如下:
```javascript
data: {
goodsObj: {},
goods_id: null
},
onLoad({ goods_id }) {
console.log(goods_id);
this.setData({ goods_id });
this.getGoodsDetail();
},
async getGoodsDetail() {
try {
const { goods_id } = this.data;
const [goodsObj] = await Promise.allSettled([
request({ url: "/goods/detail", data: { goods_id } })
]);
if (goodsObj.status === "fulfilled") {
console.log(goodsObj.value);
this.setData({
goodsObj: goodsObj.value
});
this.setData({
goodsObj: {
goods_name: goodsObj.value.goods_name,
goods_price: goodsObj.value.goods_price,
goods_introduct: goodsObj.value.goods_introduct,
pics: goodsObj.value.pics
}
});
} else {
throw new Error(goodsObj.reason);
}
} catch (error) {
console.error(error);
// 处理错误的方式,例如提示用户网络异常等信息
}
}
```
阅读全文