Skip to content

Event Bus

Bindings for @solid-primitives/event-bus.

let createEventBus<'T>(): EventBus<'T>
let createEmitter<'T>(): Emitter<'T>
let createMappedEmitter<'MessageSchema>(): MappedEmitter<'MessageSchema>
let createEventHub<'T>(?channels: 'T): EventHub<'T>

Every subscription is removed automatically when its owner is cleaned up. Call the returned DisposeCallback to remove it earlier.

EventBus

A single-event emitter.

type EventBus<'T> =
    member listen: ('T -> unit) -> DisposeCallback
    member emit: 'T -> unit
    member clear: unit -> unit

Emitter

An emitter for multiple named events, with untyped messages.

type Emitter<'MessageTyper> =
    member on: (string * (obj -> unit)) -> DisposeCallback
    member emit: (string * obj) -> unit
    member clear: unit -> unit

MappedEmitter

A typed Emitter, made for F#. The event key is a member of 'MessageMapper, so the message has that member's type.

type MappedEmitter<'MessageMapper> =
    member on: (mapping: 'MessageMapper -> 'MessageType) -> (callback: 'MessageType -> unit) -> DisposeCallback
    member emit: (mapping: 'MessageMapper -> 'MessageType) -> (message: 'MessageType) -> unit
    member clear: unit -> unit

GlobalEmitter and EventHub

GlobalEmitter<'T> is an Emitter that can also listen to every event, through listen: (obj -> unit) -> DisposeCallback.

EventHub<'T> inherits GlobalEmitter<'T> and groups several buses: createEventBus, createEventStack, or any emitter with the same API. Little else is bound for it.

Edit this page