diff --git a/packages/frontend/src/world/utility.ts b/packages/frontend/src/world/utility.ts index 10edb507ff..01d077c8ef 100644 --- a/packages/frontend/src/world/utility.ts +++ b/packages/frontend/src/world/utility.ts @@ -571,11 +571,17 @@ export class Timer { this.timeoutIds.push(id); } - public setInterval(callback: () => void, ms: number) { + public setInterval(callback: () => void, ms: number, signal?: AbortSignal) { // workerで実行される可能性がある // eslint-disable-next-line no-restricted-globals const id = setInterval(callback, ms); this.intervalIds.push(id); + if (signal != null) { + signal.addEventListener('abort', () => { + clearInterval(id); + this.intervalIds = this.intervalIds.filter(i => i !== id); + }); + } } public dispose() {