The EventListener class provides an event management system for handling operation interruption events. It implements the observer pattern for events of types aborted and cancelled.
Two event types are supported:
aborted - operation was abortedcancelled - operation was cancelledaddEventListener(type, listener): VoidFunction
Adds an event listener for the specified event type.
Parameters:
type: 'aborted' | 'cancelled' - event typelistener: (error: AbortError): void - event handler functionReturns: A function to remove the event listener (unsubscribe)
Example:
const unsubscribe = listener.addEventListener('aborted', (error) => {
console.log('Operation aborted:', error);
});
// Call the returned function to unsubscribe
unsubscribe();
removeEventListener(type, listener): void
Removes an event listener for the specified event type.
Parameters:
type: 'aborted' | 'cancelled' - event typelistener: (error: AbortError): void - event handler function to removedispatchEvent(type, error): void
Dispatches an event of the specified type, calling all registered handlers.
Parameters:
type: 'aborted' | 'cancelled' - event type to dispatchevent: AbortError - event data passed to handlersSpecial Note: When dispatching 'aborted' or 'cancelled' events, the global onabort handler is also called.
onabort?: OnAbortCallback
Global handler called for any abort event (aborted or cancelled).
Example:
aborter.listeners.onabort = (error) => {
console.log('Global abort handler:', error);
};
state
Returns an StateObserver object for monitoring the status of requests.
import { Aborter, AbortError } from 'saborter';
// Create Aborter instance with global handler
const aborter = new Aborter({
onAbort: (error) => {
console.log('Global abort detected:', error);
}
});
// Add specific event handlers
const removeAbortedHandler = aborter.listeners.addEventListener('aborted', (error) => {
console.log('Aborted error:', error);
});
const removeCancelledHandler = aborter.listeners.addEventListener('cancelled', (error) => {
console.log('Cancelled error:', error);
});
// Dispatch an event
aborter.listeners.dispatchEvent('aborted', new AbortError('message error'));
// Remove handler
removeAbortedHandler();
import { Aborter } from 'saborter';
// Create Aborter instance with global handler
const aborter = new Aborter({
onAbort: (error) => {
if (error.initiator === 'timeout') {
// We caught a bug caused by a timeout
}
}
});
// Add specific event handlers
const removeAbortedHandler = aborter.listeners.addEventListener('aborted', (error) => {
if (error.initiator === 'timeout') {
// We caught a bug caused by a timeout
}
});
import { Aborter, TimeoutError } from 'saborter';
// Create Aborter instance with global handler
const aborter = new Aborter({
onAbort: (error) => {
if (error.initiator === 'timeout' && error.cause instanceof TimeoutError) {
console.log(error.cause.ms); // `error.cause` — TimeoutError
}
}
});