1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Cleanup <EventEmitter>

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2021-07-09 17:06:25 -04:00
parent ad8dc8a7c9
commit 0587a45cbe

View File

@ -33,12 +33,8 @@ export class EventEmitter<D extends [...any[]]> {
addListener(callback: Callback<D>, options: Options = {}) {
if (options.prepend) {
const listeners = [...this.listeners];
listeners.unshift([callback, options]);
this.listeners = new Map(listeners);
}
else {
this.listeners = new Map([[callback, options], ...this.listeners]);
} else {
this.listeners.set(callback, options);
}
}
@ -52,12 +48,14 @@ export class EventEmitter<D extends [...any[]]> {
}
emit(...data: D) {
[...this.listeners].every(([callback, options]) => {
if (options.once) {
for (const [callback, { once }] of this.listeners) {
if (once) {
this.removeListener(callback);
}
return callback(...data) !== false;
});
if (callback(...data) === false) {
break;
}
}
}
}