interface RequestConfig { name?: string; requestFn: (signal: AbortSignal) => Promise; validateFn?: (data: T) => boolean; } interface SuccessResult { success: true; data: T; source: string; index: number; cancelled?: never; } interface CancelledResult { success: false; cancelled: true; data?: never; source?: never; index?: never; } type RequestResult = SuccessResult | CancelledResult; interface RaceOptions { timeout?: number; abortOnFirstSuccess?: boolean; } export default class RaceRequestManager { private activeControllers; private defaultOptions; /** * 竞态请求,返回第一个成功且有效的结果 * @param requestConfigs 请求配置数组 * @param options 选项 * @returns 第一个成功的结果 */ raceForValidResult(requestConfigs: RequestConfig[], options?: RaceOptions): Promise>; /** * 创建可取消的请求 */ private createCancellableRequest; /** * 清理所有活动的请求控制器 */ cleanup(): void; /** * 获取当前活动的请求数量 */ getActiveRequestCount(): number; } export { RaceRequestManager, type RequestConfig, type SuccessResult, type CancelledResult, type RequestResult, type RaceOptions };