blob: afc1f406232dbd1fae1f0e5b2080092777476988 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
export function callHandle(handle: Deinit): void {
if ('disconnect' in handle) { // Browser observers
handle.disconnect();
} else if ('abort' in handle) {
handle.abort();
} else if (typeof handle === 'function') {
handle();
}
}
export default function onAbort(abort: AbortController | AbortSignal, ...callbacks: Deinit[]): void {
const signal = abort instanceof AbortController ? abort.signal : abort;
signal.addEventListener('abort', () => {
for (const callback of callbacks) {
callHandle(callback);
}
});
}
|