UNPKG

@ydbjs/abortable

Version:

Utilities for working with AbortController and AbortSignal in YDB operations.

29 lines 862 B
export function linkSignals(...signals) { let ac = new AbortController(); let activeSignals = signals.filter((s) => !!s); for (let signal of activeSignals) { if (signal.aborted) { ac.abort(signal.reason); return { signal: ac.signal, [Symbol.dispose]: () => { }, }; } } let onAbort = (e) => ac.abort(e.target.reason); for (let signal of activeSignals) { signal.addEventListener('abort', onAbort, { once: true }); } return { signal: ac.signal, [Symbol.dispose]() { for (let signal of activeSignals) { signal.removeEventListener('abort', onAbort); } if (!ac.signal.aborted) { ac.abort(); } }, }; } //# sourceMappingURL=signals.js.map