优化这段代码" data: { goodsObj:{} }, /** * 生命周期函数--监听页面加载 */ onLoad({ goods_id }) { console.log(goods_id); this.getGoodsDetail(goods_id); }, async getGoodsDetail(goods_id) { try { const [goodsObj] = await Promise.all([ request({ url: "/goods/detail", data: { goods_id } }) ]); console.log(goodsObj); } catch (error) { console.error(error); } },"
时间: 2023-12-21 11:04:15 浏览: 63
这段代码已经很不错了,但是还有一些可以优化的地方。具体建议如下:
1. 在 `data` 中,可以给 `goods_id` 赋一个默认值,以避免在使用 `onLoad` 函数时出现错误。
2. 在 `getGoodsDetail` 函数中,可以使用 `Promise.allSettled` 方法,以允许多个 Promise 并行执行,并在所有 Promise 都已解决(即成功或失败)时返回所有 Promise 的结果。
3. 在 `getGoodsDetail` 函数中,可以使用 `try...catch` 块来捕获 Promise 的错误,并处理错误的方式。
下面是优化后的代码:
```
data: {
goodsObj: {},
goods_id: null // 给 goods_id 赋一个默认值
},
/**
* 生命周期函数--监听页面加载
*/
onLoad({ goods_id }) {
console.log(goods_id);
this.setData({ goods_id }); // 将 goods_id 更新到 data 中
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);
// 处理错误的方式,例如提示用户网络异常等信息
}
}
```
阅读全文