class Delay { private delays: { duration: number; elapsed: number; resolve: (() => void) | null; }[] = []; private paused: boolean = false; // 创建一个新的延迟 public start(seconds: number): Promise { const duration = seconds; return new Promise((resolve) => { this.delays.push({ duration: duration, elapsed: 0, resolve: resolve }); }); } public pause(): void { this.paused = true; } public resume(): void { this.paused = false; } //更新所有延迟的状态,传入更新时间间隔(秒) public update(deltaTime: number): void { if (this.paused) return; for (let i = this.delays.length - 1; i >= 0; i--) { const delay = this.delays[i]; delay.elapsed += deltaTime; // 累加已过时间 if (delay.elapsed >= delay.duration) { if (delay.resolve) { delay.resolve(); // 解析 Promise delay.resolve = null; // 清空引用 } this.delays.splice(i, 1); // 从数组中移除已完成的延迟对象 } } } //取消所有延迟 public cancelAll(): void { this.delays.forEach(delay => { delay.resolve = null; }); this.delays = []; //清空所有延迟 } //检查是否有活动的延迟 public isActive(): boolean { return this.delays.length > 0; } } export default function get_new_delay(): Delay { return new Delay(); }