abort controller and abort signal classes that compose multiple abort signals
npm i --save composite-abort-controller
// esm
import CompositeAbortController from 'composite-abort-controller'
// commonjs
const CompositeAbortController = require('composite-abort-controller').default
import CompositeAbortController from 'composite-abort-controller'
const sourceControllers = [
new AbortController(),
new AbortController(),
new AbortController(),
]
const sourceSignals = sourceControllers.map((c) => c.signal)
const controller = new CompositeAbortController(sourceSignals)
const signal = controller.signal()
console.log(signal.aborted) // false
signal.addEventListener('abort', handleAbort)
sourceControllers.forEach((controller) => controller.abort())
console.log(signal.aborted) // true
function handleAbort() {
console.log('all signals aborted')
}
import { CompositeAbortSignal } from 'composite-abort-controller'
const sourceControllers = [
new AbortController(),
new AbortController(),
new AbortController(),
]
const sourceSignals = sourceControllers.map((c) => c.signal)
const signal = new CompositeAbortSignal(sourceSignals)
console.log(signal.aborted) // false
signal.addEventListener('abort', handleAbort)
sourceControllers.forEach((controller) => controller.abort())
console.log(signal.aborted) // true
function handleAbort() {
console.log('all signals aborted')
}
const compositeAbortController = new CompositeAbortController(sourceSignals)
const newController = new AbortController()
compositeAbortController.addSignal(newController.signal)
const compositeAbortController = new CompositeAbortController(sourceSignals)
const compositeAbortSignal = compositeAbortController.signal
const newController = new AbortController()
compositeAbortSignal.add(newController.signal)
MIT