if (routeritem?.meta?.title === 'My Request') { void getInProcessCount().then(count => ({ inProcessCount = count return inProcessCount }))
时间: 2023-12-31 18:06:27 浏览: 67
这段代码的问题在于,在箭头函数中不能使用 `return` 语句和赋值语句组合在一起使用。在这里,需要将赋值语句放在 `then` 方法的回调函数中,例如:
```javascript
if (routeritem?.meta?.title === 'My Request') {
void getInProcessCount().then(count => {
inProcessCount = count;
routeritem.meta.title = `${routeritem.meta?.title}(${inProcessCount})`;
});
}
```
这样就可以避免这个提示了。另外,注意这里使用了模板字符串 `${}` 来构建新的标题字符串,以便在其中包含计算出的 `inProcessCount` 值。
相关问题
// 获取 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})`; } }) }优化这段代码
这段代码可以进行以下优化:
```
// 判断 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(routeritem) } 如何让getInProcessCount的方法只执行一次
可以使用一个变量来记录 `getInProcessCount` 方法是否已经被调用过,如果已经被调用过,则不再执行。例如:
```
let isGetInProcessCountCalled = false;
if (routeritem?.meta?.title === 'My Request' && !isGetInProcessCountCalled) {
isGetInProcessCountCalled = true;
void getInProcessCount(routeritem);
}
```
这样,第一次调用 `getInProcessCount` 方法时 `isGetInProcessCountCalled` 会被设置为 `true`,以后再调用时就不会再执行了。注意要将 `isGetInProcessCountCalled` 定义在作用域范围之外,以便在多次调用时保留状态。
阅读全文