可是你这只能找到一个目标,如果overrides有很多对象呢,对不对,我需要所有对象都找一遍,找到就停止
时间: 2024-04-15 11:27:30 浏览: 11
如果您需要对 `overrides` 数组中的每个对象都进行查找,直到找到匹配的数据并停止请求,您可以使用一个额外的标志变量来判断是否找到目标数据。以下是修改后的代码示例:
```javascript
findOverrideMapId = async (overrides: CaseOverrideInfo[]) => {
let page = 1;
const pageSize = 40;
let mapIdTowardIndex = -1;
let foundAllOverrides = false; // 新增的标志变量
while (page && !foundAllOverrides) {
const batchMaps = await this.getMaps(page, pageSize);
for (const item of overrides) {
if (item.missingMap && !item.overrideMapId) {
const mapIdTowardId = batchMaps.items.find((ele) => ele?.name === item.mapId)?.id;
mapIdTowardIndex =
batchMaps.items.findIndex((ele) => ele?.name === item.mapId) + (page - 1) * pageSize;
item.overrideMapId = mapIdTowardId || "";
if (mapIdTowardId) {
foundAllOverrides = true; // 找到目标数据后设置标志变量为 true
}
}
}
page++;
if (!batchMaps || batchMaps.items.length < pageSize) {
break;
}
}
this.setState({ initialPage: Math.ceil(mapIdTowardIndex / (pageSize + 2)) });
return overrides;
};
```
在这个示例中,我们添加了一个名为 `foundAllOverrides` 的标志变量,并在找到目标数据后将其设置为 `true`。在每次循环迭代时,我们都会检查这个标志变量的值,如果为 `true`,则会停止请求循环。这样,即使 `overrides` 数组中有多个对象,只要找到了目标数据,就会停止请求。
请注意,这只是一种实现方式,具体的实现需要根据您的代码逻辑进行调整。