diff --git a/src/components/proxy/proxy-groups.tsx b/src/components/proxy/proxy-groups.tsx index 8386b53..4637cb4 100644 --- a/src/components/proxy/proxy-groups.tsx +++ b/src/components/proxy/proxy-groups.tsx @@ -9,10 +9,10 @@ import { } from "@/services/api"; import { useProfiles } from "@/hooks/use-profiles"; import { useVerge } from "@/hooks/use-verge"; +import { BaseEmpty } from "../base"; import { useRenderList } from "./use-render-list"; import { ProxyRender } from "./proxy-render"; import delayManager from "@/services/delay"; -import { BaseEmpty } from "../base"; interface Props { mode: string; @@ -83,7 +83,7 @@ export const ProxyGroups = (props: Props) => { } const names = proxies.filter((p) => !p!.provider).map((p) => p!.name); - await delayManager.checkListDelay(names, groupName, 24); + await delayManager.checkListDelay(names, groupName); onProxies(); }); diff --git a/src/services/delay.ts b/src/services/delay.ts index bc45fe2..4739d1b 100644 --- a/src/services/delay.ts +++ b/src/services/delay.ts @@ -84,35 +84,26 @@ class DelayManager { return delay; } - async checkListDelay( - nameList: readonly string[], - groupName: string, - concurrency: number - ) { - const names = [...nameList]; + async checkListDelay(nameList: string[], group: string, concurrency = 6) { + const names = nameList.filter(Boolean); + // 设置正在延迟测试中 + names.forEach((name) => this.setDelay(name, group, -2)); let total = names.length; let current = 0; - // 设置正在延迟测试中 - names.forEach((name) => this.setDelay(name, groupName, -2)); - return new Promise((resolve) => { const help = async (): Promise => { if (current >= concurrency) return; - const task = names.shift(); if (!task) return; - current += 1; - await this.checkDelay(task, groupName); + await this.checkDelay(task, group); current -= 1; total -= 1; - if (total <= 0) resolve(null); else return help(); }; - for (let i = 0; i < concurrency; ++i) help(); }); }