Spaces:
Paused
Paused
File size: 622 Bytes
9ada4bc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import { Emitter, EventMap } from 'strict-event-emitter'
/**
* Emits an event on the given emitter but executes
* the listeners sequentially. This accounts for asynchronous
* listeners (e.g. those having "sleep" and handling the request).
*/
export async function emitAsync<
Events extends EventMap,
EventName extends keyof Events
>(
emitter: Emitter<Events>,
eventName: EventName,
...data: Events[EventName]
): Promise<void> {
const listners = emitter.listeners(eventName)
if (listners.length === 0) {
return
}
for (const listener of listners) {
await listener.apply(emitter, data)
}
}
|