@dbp-toolkit/common
Version:
You can install these components via npm:
40 lines (34 loc) • 936 B
JavaScript
/**
* Takes multiple AbortSignal instances and returns a new AbortController which
* gets aborted if any of the AbortSignals do.
*
* @param {...AbortSignal} signals
* @returns {AbortController}
*/
export function createLinkedAbortController(...signals) {
const controller = new AbortController();
for (const signal of signals) {
if (signal.aborted) {
controller.abort();
break;
} else {
signal.addEventListener('abort', () => {
controller.abort();
});
}
}
return controller;
}
/**
* Returns an AbortSignal which aborts after the specified time.
*
* @param {number} delay Delay in milliseconds
* @returns {AbortSignal}
*/
export function createTimeoutAbortSignal(delay) {
const controller = new AbortController();
setTimeout(() => {
controller.abort();
}, delay);
return controller.signal;
}