优化这段代码 async onLoad() { let dataType = uni.getStorageSync("dataType"); let wm_id = uni.getStorageSync("id"); if (dataType == 2) { const { data, code } = await $daskDetail({ wm_id }); if (code == 200) { const res = await $startData({ wl_id: data.count.wl_id }); if (res.code == 200) { this.status = 2; let endTools = JSON.parse(uni.getStorageSync("tools")); } } } },
时间: 2024-03-05 09:48:47 浏览: 153
可以尝试以下优化:
1. 使用 Promise.all() 并行请求数据。
2. 使用 try-catch 捕获异步请求的错误。
3. 使用解构赋值提取需要的数据。
4. 缓存请求结果,避免重复请求。
优化后的代码如下:
```
async onLoad() {
try {
const [dataType, wm_id] = await Promise.all([
uni.getStorageSync("dataType"),
uni.getStorageSync("id")
]);
if (dataType == 2) {
const { data } = await $daskDetail({ wm_id });
const { code } = await $startData({ wl_id: data.count.wl_id });
if (code == 200) {
this.status = 2;
const endTools = JSON.parse(uni.getStorageSync("tools"));
// 缓存请求结果
uni.setStorageSync("endTools", endTools);
}
}
} catch (error) {
console.error(error);
}
},
```
相关问题
优化这段代码let dataType = uni.getStorageSync("dataType"); let wm_id = uni.getStorageSync("id"); if (dataType == 2) { const { data, code } = await $daskDetail({ wm_id }); if (code == 200) { const res = await $startData({ wl_id: data.count.wl_id }); if (res.code == 200) { this.status = 2; let endTools = JSON.parse(uni.getStorageSync("tools")); } } }
可以尝试以下优化:
1. 使用 async/await 简化异步请求代码。
2. 使用解构赋值提取需要的数据。
3. 缓存请求结果,避免重复请求。
优化后的代码如下:
```
try {
const dataType = await uni.getStorageSync("dataType");
if (dataType == 2) {
const wm_id = await uni.getStorageSync("id");
const { data, code } = await $daskDetail({ wm_id });
if (code == 200) {
const res = await $startData({ wl_id: data.count.wl_id });
if (res.code == 200) {
this.status = 2;
const endTools = JSON.parse(uni.getStorageSync("tools"));
// 缓存请求结果
uni.setStorageSync("endTools", endTools);
}
}
}
} catch (error) {
console.error(error);
}
```
onLoad(async () => { if (uni.getStorageSync("WxAuthorization")) return; uni.login({ success: async (res) => { const data = await uni.$u.api.login.authLogin({ loginCode: res.code }); uni.setStorageSync("WxAuthorization", "Bearer " + data.token); uni.setStorageSync("loginStatus", data.loginStatus); }, }); getSwiperPic(); getNotice(); getTools(); }); 优化当前代码让他按顺序执行
为了让这段代码按顺序执行,我们可以将获取登录凭证和获取数据的操作放在同一个async函数中,并且使用await来等待前一个操作完成后再执行后面的操作。同时,我们需要将获取数据的三个函数也改为支持async/await的异步函数。
下面是优化后的代码:
```javascript
onLoad(async () => {
if (uni.getStorageSync("WxAuthorization")) return;
try {
const res = await uni.login();
const data = await uni.$u.api.login.authLogin({ loginCode: res.code });
uni.setStorageSync("WxAuthorization", "Bearer " + data.token);
uni.setStorageSync("loginStatus", data.loginStatus);
await getSwiperPic();
await getNotice();
await getTools();
} catch (error) {
console.error(error);
}
});
async function getSwiperPic() {
// 获取轮播图数据
}
async function getNotice() {
// 获取公告数据
}
async function getTools() {
// 获取工具数据
}
```
这样,代码就会按照顺序执行,并且在执行过程中如果出现异常也能够正确地处理。
阅读全文