findOverrideMapId = async (overrides: CaseOverrideInfo[]) => { const allMapsList = []; let page = 1; const pageSize = 40; while (page) { const batchMaps = await this.getMaps(page, pageSize); allMapsList.push(...batchMaps.items); page++; if (!batchMaps || batchMaps.items.length < pageSize) { break; } } for (const item of overrides) { if (item.missingMap) { const mapIdTowardId = allMapsList.find((ele) => ele?.name === item.mapId)?.id; item.overrideMapId = mapIdTowardId || ""; } } return overrides; };我不想获取所有的allMapsList数据再进行对比,我希望找到目标的数据就停止发请求
时间: 2024-02-14 17:29:00 浏览: 76
要在找到目标数据后停止请求,您可以在逐个遍历 `overrides` 的过程中添加一个条件判断来实现。当找到目标数据后,您可以使用 `break` 语句来终止循环。以下是修改后的代码示例:
```javascript
findOverrideMapId = async (overrides: CaseOverrideInfo[]) => {
let page = 1;
const pageSize = 40;
let mapIdTowardIndex = -1;
while (page) {
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;
if (mapIdTowardId) {
item.overrideMapId = mapIdTowardId;
mapIdTowardIndex =
batchMaps.items.findIndex((ele) => ele?.name === item.mapId) + (page - 1) * pageSize;
break; // 找到目标数据后终止循环
}
}
}
page++;
if (!batchMaps || batchMaps.items.length < pageSize || mapIdTowardIndex !== -1) {
break; // 当获取到目标数据或者达到结束条件时终止请求循环
}
}
this.setState({ initialPage: Math.ceil(mapIdTowardIndex / (pageSize + 2)) });
return overrides;
};
```
在这个示例中,当找到目标数据并更新 `overrideMapId` 后,我们使用 `break` 语句来终止内部循环。同时,我们还在外部循环中添加了一个条件判断,当获取到目标数据或者达到结束条件时,也会使用 `break` 语句来终止请求循环。
请注意,这只是一种实现方式,具体的实现可能需要根据您的代码逻辑进行调整。
阅读全文