Skip to content

AsyncEventsBase<EventMap>

Async event source implementation.

Import:

import { AsyncEventsBase } from 'obsidian-dev-utils/async-events';

Example:

// Untyped (default) — any event name, any args:
const events = new AsyncEvents();
events.on('my-event', (arg1: string) => { ... });
// Typed — only declared events with correct args:
interface MyEventMap {
save: [data: string];
load: [id: number, force: boolean];
}
const events = new AsyncEvents<MyEventMap>();
events.on('save', (data) => { ... }); // data: string — autocomplete on event name
events.on('load', (id, force) => { ... }); // id: number, force: boolean

Signature:

export class AsyncEventsBase<EventMap extends EventMapConstraint<EventMap> = EventMapBase> implements AsyncEventSource<EventMap>

Implements: AsyncEventSource<EventMap>

Properties

PropertyTypeDescription
[ASYNC_EVENT_MAP]?EventMapPhantom marker that makes EventMap inferable from an AsyncEventSource (e.g. via Source extends AsyncEventSource<infer EventMap>). Never present at runtime.
(Inherited from AsyncEventSource)
eventRefsMapMap<string, AsyncEventRef[]>The registry mapping each event name to its list of registered listener references.

Methods

MethodReturnsDescription
off(name, callback)voidRemove an event listener.
offref(eventRef)voidRemove an event listener by reference.
on(name, callback, thisArg?)AsyncEventRefAdd an event listener.
once(name, callback, thisArg?)AsyncEventRefAdd an event listener that will be triggered only once.
trigger(name, args?)voidTrigger an event, executing all the listeners in order even if some of them throw an error.
triggerAsync(name, args?)Promise<void>Trigger an event asynchronously, executing all the listeners in order even if some of them throw an error.
tryTrigger(eventRef, args)voidTry to trigger an event, executing all the listeners in order even if some of them throw an error.
tryTriggerAsync(eventRef, args)Promise<void>Try to trigger an event asynchronously, executing all the listeners in order even if some of them throw an error.

Links to this page: