Skip to content

Event Hooks

FastEvent provides rich lifecycle hooks that allow you to inject custom logic at key points in event processing.

onAddListener

Triggered when adding a new event listener.

typescript
const emitter = new FastEvent({
    onAddListener(parts, listener) {
        // parts: Event path array, like ['user', 'login']
        // listener: Listener function
        console.log(`Adding listener: ${parts.join('/')}`);
        console.log('Listener function:', listener);
    },
});

onRemoveListener

Triggered when removing an event listener.

typescript
const emitter = new FastEvent({
    onRemoveListener(parts, listener) {
        // parts: Event path array
        // listener: Removed listener function
        console.log(`Removing listener: ${parts.join('/')}`);
    },
});

onListenerError

Triggered when a listener execution encounters an error.

typescript
const emitter = new FastEvent({
    onListenerError(event, error) {
        // event: Event type
        // error: Error object
        console.error(`Error handling event ${event}:`, error);

        // Return true indicates error has been handled, won't be thrown
        return true;
    },
});

onClearListeners

Triggered when calling offAll() to clear all listeners.

typescript
const emitter = new FastEvent({
    onClearListeners() {
        console.log('All listeners have been cleared');
    },
});

onBeforeExecuteListener

Triggered before executing a listener, can be used to intercept event execution.

typescript
const emitter = new FastEvent({
    onBeforeExecuteListener(message, args) {
        // message: Event message object, containing type and payload
        // args: Event arguments
        console.log(`Preparing to execute event: ${message.type}`);

        // Returning false can prevent event execution
        if (message.type.startsWith('restricted/')) {
            return false;
        }
    },
});

onAfterExecuteListener

Triggered after all listeners have completed execution.

typescript
const emitter = new FastEvent({
    onAfterExecuteListener(message, results, listeners) {
        // message: Event message object
        // results: Array of all listener execution results
        // listeners: Executed listener node data
        console.log(`Event ${message.type} execution completed`);
        console.log('Execution results:', results);
    },
});