aborter
Version:
A minimal reimplementation of AbortController and AbortSignal.
29 lines (28 loc) • 672 B
JavaScript
/* IMPORT */
/* MAIN */
class AbortSignal {
constructor() {
/* VARIABLES */
this.aborted = false;
this.listeners = new Set();
}
/* EVENTS API */
addEventListener(event, listener) {
if (event !== 'abort')
return;
this.listeners.add(listener);
}
removeEventListener(event, listener) {
if (event !== 'abort')
return;
this.listeners.delete(listener);
}
dispatchEvent(event) {
if (event !== 'abort')
return false;
[...this.listeners].forEach(listener => listener());
return true;
}
}
/* EXPORT */
export default AbortSignal;