electron/spec/lib/events-helpers.ts

24 lines
734 B
TypeScript
Raw Normal View History

/**
* @fileoverview A set of helper functions to make it easier to work
* with events in async/await manner.
*/
import { on } from 'node:events';
export const emittedNTimes = async (emitter: NodeJS.EventEmitter, eventName: string, times: number, trigger?: () => void) => {
2020-03-20 20:28:31 +00:00
const events: any[][] = [];
const iter = on(emitter, eventName);
if (trigger) await Promise.resolve(trigger());
for await (const args of iter) {
events.push(args);
if (events.length === times) { break; }
}
return events;
2020-03-20 20:28:31 +00:00
};
export const emittedUntil = async (emitter: NodeJS.EventEmitter, eventName: string, untilFn: Function) => {
for await (const args of on(emitter, eventName)) {
if (untilFn(...args)) { return args; }
}
2020-03-20 20:28:31 +00:00
};