123456789101112131415161718192021222324 |
- /**
- * @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) => {
- 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;
- };
- export const emittedUntil = async (emitter: NodeJS.EventEmitter, eventName: string, untilFn: Function) => {
- for await (const args of on(emitter, eventName)) {
- if (untilFn(...args)) { return args; }
- }
- return [];
- };
|