21 lines
728 B
Plaintext
21 lines
728 B
Plaintext
// When attaching listeners, it's very easy to forget about them.
|
|
// Especially if you do error handling and set timeouts.
|
|
// So instead of checking if it's proper to throw an error on every timeout ever,
|
|
// use this simple tool which will remove all listeners you have attached.
|
|
export default function unhandle() {
|
|
const handlers = [];
|
|
return {
|
|
once(origin, event, fn) {
|
|
origin.once(event, fn);
|
|
handlers.push({ origin, event, fn });
|
|
},
|
|
unhandleAll() {
|
|
for (const handler of handlers) {
|
|
const { origin, event, fn } = handler;
|
|
origin.removeListener(event, fn);
|
|
}
|
|
handlers.length = 0;
|
|
},
|
|
};
|
|
}
|