diff --git a/src/components/proxy/proxy-groups.tsx b/src/components/proxy/proxy-groups.tsx index 8386b53e470498ee3beb97af11be1a468ccaf94c..4637cb4bcc04de84966ce44b99be73cbe8aa89e5 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 bc45fe20d9a21b277ef604e09b226621dd0679b7..4739d1b46d06d33f0fc6978c62cfaff734571b5b 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<void> => { 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(); }); }