优化这串代码 try { // get user info await store.dispatch('user/getInfos'); const room_num =store.getters.room_num; if (to.path == '/user/user' && num == 0) { next({ path: "/" }) } else if (to.path == '/video/video' && num == 0) { next({ path: "/" }) } else if (to.path == '/classroom/classroom') { if (room_num < 2) { next({ path: "/" }) } else { // console.log('我走了这里'); next() } } else { next() } // console.log('我走下面', 1111); NProgress.done() } catch (error) { // remove token and go to login page to re-login await store.dispatch('user/resetToken') Message.error(error || 'Has Error') next(`/login?redirect=${to.path}&id=${id}`) NProgress.done() }
时间: 2024-02-10 17:26:24 浏览: 88
下面是对代码进行优化的建议:
1. 将重复的逻辑提取为一个函数,避免重复编写相似的代码块。
2. 使用对象字面量来简化条件判断语句。
3. 使用解构赋值来获取 `to.path` 和 `num` 变量。
4. 使用 `finally` 块来避免重复的代码。
优化后的代码如下:
```javascript
try {
// get user info
await store.dispatch('user/getInfos');
const { path: toPath } = to;
const { num, room_num } = store.getters;
const redirectPath = "/";
const conditions = {
'/user/user': num === 0,
'/video/video': num === 0,
'/classroom/classroom': room_num < 2
};
if (conditions[toPath]) {
next({ path: redirectPath });
} else {
next();
}
} catch (error) {
// remove token and go to login page to re-login
await store.dispatch('user/resetToken');
Message.error(error || 'Has Error');
const { path: toPath, query: { id } } = to;
next(`/login?redirect=${toPath}&id=${id}`);
} finally {
NProgress.done();
}
```
注意:优化后的代码可能还存在其他潜在的问题,需要进行测试和验证。
阅读全文