abort-utils
Version:
Utility functions to use and combine `AbortSignal` and `AbortController` with Promises
15 lines (14 loc) • 535 B
JavaScript
/** Like AbortSignal.any(), except it accepts `undefined` as well, so you can pass in optional signals without further logic */
export function mergeSignals(...signals) {
const adjusted = signals
.filter(Boolean)
.map(signal => signal instanceof AbortSignal
? signal
// @ts-expect-error idk what you're talking about, signal is not undefined
: signal.signal);
if (adjusted.length === 1) {
// Return as is
return adjusted[0];
}
return AbortSignal.any(adjusted);
}