|
import { onDestroy } from "svelte"; |
|
import { createInit } from "./create-init.svelte"; |
|
|
|
|
|
|
|
|
|
export class AbortManager { |
|
private controllers: AbortController[] = []; |
|
|
|
constructor() { |
|
this.init(); |
|
} |
|
|
|
init = createInit(() => { |
|
try { |
|
onDestroy(() => this.abortAll()); |
|
} catch { |
|
|
|
} |
|
}); |
|
|
|
|
|
|
|
|
|
public createController(): AbortController { |
|
const controller = new AbortController(); |
|
this.controllers.push(controller); |
|
return controller; |
|
} |
|
|
|
|
|
|
|
|
|
public abortAll(): void { |
|
this.controllers.forEach(controller => controller.abort()); |
|
this.controllers = []; |
|
} |
|
|
|
|
|
public clear(): void { |
|
this.controllers = []; |
|
} |
|
} |
|
|