Documentation / @zerotal/core / index / Emitter
Class: Emitter
Defined in: events/Emitter.ts:58
The class-based application event emitter: register listener classes against event classes, then dispatch event instances to them.
Events are plain classes and listeners are classes exposing a
handle(event) method. Dispatch can run concurrently and fire-and-forget
(Emitter.emit), one-at-a-time (Emitter.emitSync), or be
deferred to the queue when a listener declares a queue target and a queue
manager is registered. Listener failures during Emitter.emit are
isolated and logged, never rethrown to the caller.
Reached in applications through the Events facade; construct directly only
in tests or bespoke wiring.
Example
import { Emitter } from "@zerotal/core";
class UserRegistered {
constructor(readonly userId: string) {}
}
class SendWelcomeEmail {
async handle(event: UserRegistered): Promise<void> {
// await mail.to(event.userId).send(new Welcome());
}
}
const emitter = new Emitter();
emitter.on(UserRegistered, SendWelcomeEmail);
await emitter.emit(new UserRegistered("u_123"));
Extended by
Constructors
Constructor
new Emitter(
application?):Emitter
Defined in: events/Emitter.ts:67
Parameters
application?
any
Returns
Emitter
Dispatch
emit()
emit<
T>(event):Promise<void>
Defined in: events/Emitter.ts:166
Dispatch an event to all its listeners concurrently, deferring any listener
that declares a queue target to the queue manager when one is available.
Listener failures are isolated and logged, never rethrown to the caller.
Broadcastable events (those with a broadcastOn() method) are broadcast
first, so they fire even when no listeners are registered.
Type Parameters
T
T extends object
Parameters
event
T
The event instance; its constructor selects the listeners.
Returns
Promise<void>
Resolves once every listener has settled (queued ones once enqueued).
emitSync()
emitSync<
T>(event):Promise<void>
Defined in: events/Emitter.ts:226
Dispatch an event to its listeners one at a time, awaiting each in turn. Unlike Emitter.emit, listeners run inline (never queued) and a thrown error is not caught — it propagates to the caller.
Type Parameters
T
T extends object
Parameters
event
T
The event instance; its constructor selects the listeners.
Returns
Promise<void>
dispatchQueuedListener()
dispatchQueuedListener(
listenerName,eventPayload):Promise<void>
Defined in: events/Emitter.ts:251
Run a deferred listener by name with its raw payload. Called by the queue worker, not application code.
Parameters
listenerName
string
The registered listener class name.
eventPayload
any
The raw payload handed straight to handle() (for most
listeners the payload is the event).
Returns
Promise<void>
Throws
If no listener is registered under listenerName.
Subscription
on()
on<
T>(eventClass,listenerClass):void
Defined in: events/Emitter.ts:107
Register a listener class to run whenever the given event class is emitted. The same event may have many listeners; they run in registration order.
Type Parameters
T
T extends object
Parameters
eventClass
EventClass<T>
The event class to listen for.
listenerClass
ListenerClass<T>
A class with a handle(event) method.
Returns
void
off()
off<
T>(eventClass,listenerClass):void
Defined in: events/Emitter.ts:134
Remove a previously registered listener for the given event class. No-op if the listener was never registered.
Type Parameters
T
T extends object
Parameters
eventClass
EventClass<T>
listenerClass
ListenerClass<T>
Returns
void
hasListeners()
hasListeners<
T>(eventClass):boolean
Defined in: events/Emitter.ts:268
Whether any listener is registered for the given event class.
Type Parameters
T
T extends object
Parameters
eventClass
EventClass<T>
Returns
boolean
clear()
clear():
void
Defined in: events/Emitter.ts:276
Remove every registered listener.
Returns
void