blob: 11d48b433695c4d0e2534760dbb906f5de13a5e1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
export function callHandle(handle: DeinitHandle): 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: DeinitHandle[]): void {
const signal = abort instanceof AbortController ? abort.signal : abort;
signal.addEventListener('abort', () => {
for (const callback of callbacks) {
callHandle(callback);
}
});
}
|