// 获取 InProcessCount 数据 if (routeritem?.meta?.title === 'My Request') { void getInProcessCount().then(() => { if (routeritem?.meta) { // eslint-disable-next-line @typescript-eslint/restrict-template-expressions routeritem.meta.title = `${routeritem.meta?.title}(${event.InProcessCount})`; } }) }优化这段代码
时间: 2024-02-14 15:04:05 浏览: 19
这段代码可以进行以下优化:
```
// 判断 routeritem 是否存在以及 meta.title 是否为 'My Request'
if (routeritem?.meta?.title === 'My Request') {
// 在获取 InProcessCount 数据之后,更新 meta.title
getInProcessCount().then((event) => {
routeritem.meta.title = `${routeritem.meta.title}(${event.InProcessCount})`;
});
}
```
优化思路:
1. `void` 关键字没有实际作用,可以去掉;
2. 在 `getInProcessCount()` 方法中,应该返回 InProcessCount 的值,然后在 `then()` 方法中进行处理;
3. 由于 `getInProcessCount()` 是一个异步方法,因此需要在 `then()` 方法中更新 `routeritem.meta.title` 的值。
相关问题
if (routeritem?.meta?.title === 'My Request') { void getInProcessCount().then(count => ({ inProcessCount = count return inProcessCount }))
这段代码的问题在于,在箭头函数中不能使用 `return` 语句和赋值语句组合在一起使用。在这里,需要将赋值语句放在 `then` 方法的回调函数中,例如:
```javascript
if (routeritem?.meta?.title === 'My Request') {
void getInProcessCount().then(count => {
inProcessCount = count;
routeritem.meta.title = `${routeritem.meta?.title}(${inProcessCount})`;
});
}
```
这样就可以避免这个提示了。另外,注意这里使用了模板字符串 `${}` 来构建新的标题字符串,以便在其中包含计算出的 `inProcessCount` 值。
let inProcessCount: number | undefined async function getInProcessCount(routeritem: RouteRecordRaw) { if (inProcessCount !== undefined) { return inProcessCount; } const len = await store.dispatch('ESourcingModule/GetMyRequest', searchView.value).then((list) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call return list.filter((o: { ViewType: string }) => o.ViewType === 'InClarification' || o.ViewType === 'SupplementEventDetails').length; }); inProcessCount = len if (routeritem?.meta) { // eslint-disable-next-line @typescript-eslint/restrict-template-expressions routeritem.meta.title = `${routeritem.meta?.title}(${inProcessCount})` } return len as number } function CheckAdmin(routeritem: RouteRecordRaw) { document.title = 'RMS E-Sourcing' if (routeritem?.meta?.title === 'My Request') { debugger void getInProcessCount(routeritem) }}
在 `CheckAdmin` 方法中调用 `getInProcessCount` 方法时,可以使用 `await` 等待其执行完成,并获取返回值,以确保在更新 `routeritem.meta.title` 时使用的是最新的计数值。例如:
```
async function CheckAdmin(routeritem: RouteRecordRaw) {
document.title = 'RMS E-Sourcing';
if (routeritem?.meta?.title === 'My Request') {
const len = await getInProcessCount(routeritem);
routeritem.meta.title = `${routeritem.meta?.title}(${len})`;
}
}
```
这样,当 `CheckAdmin` 方法调用 `getInProcessCount` 方法时,会等待其执行完成,并获取返回值 `len`,以后再更新 `routeritem.meta.title` 时使用的就是最新的计数值。