(entry: TimerEntry)
| 553 | } |
| 554 | |
| 555 | #enqueueTimer(entry: TimerEntry): void { |
| 556 | const generation = entry.generation; |
| 557 | this.#enqueue({ |
| 558 | id: entry.id, |
| 559 | kind: 'timer', |
| 560 | dueTime: entry.dueTime, |
| 561 | active: () => entry.active && entry.generation === generation && !entry.controller.signal.aborted, |
| 562 | run: () => { |
| 563 | if (entry.interval === undefined) { |
| 564 | entry.active = false; |
| 565 | this.#timers.delete(entry.id); |
| 566 | } |
| 567 | const result = entry.callback(...entry.args); |
| 568 | if (isPromiseLike(result)) { |
| 569 | this.#trackPromise(Promise.resolve(result)); |
| 570 | } |
| 571 | if (entry.interval !== undefined && entry.active) { |
| 572 | entry.generation++; |
| 573 | entry.dueTime += entry.interval; |
| 574 | this.#enqueueTimer(entry); |
| 575 | } |
| 576 | }, |
| 577 | }); |
| 578 | } |
| 579 | |
| 580 | #clearTimer(handle?: unknown): void { |
| 581 | const id = timerHandleToNumber(handle); |
no test coverage detected