mini-signals
signals, in JavaScript, fast
Description
Custom event/messaging system for TypeScript/JavaScript inspired by js-signals originally based on EventEmitter3 code base.
There are several advantages to signals over event-emitters (see Comparison between different Observer Pattern implementations). However, the current implementation of js-signals is (arguably) slow compared to other implementations (see EventsSpeedTests). mini-signals
is a fast, minimal emitter, with an API similar to js-signals.
Note: Signals here are the type defined by js-signals inspired by AS3-Signals. They should not to be confused with SolidJS or Angular signals.
Install
npm:
npm install mini-signals
Example Usage
import { MiniSignal } from "mini-signals";
const mySignal = new MiniSignal<[string, string]>();
const binding = mySignal.add(onSignal);
mySignal.dispatch("foo", "bar");
binding.detach();
function onSignal(foo: string, bar: string) {
assert(foo === "foo");
assert(bar === "bar");
}
Another Example
const myObject = {
foo: "bar",
updated: new MiniSignal<never>(),
};
myObject.updated.add(onUpdated, myObject);
myObject.foo = "baz";
myObject.updated.dispatch();
function onUpdated() {
assert(this === myObject);
assert(this.foo === "baz");
}
API
See API.md
License
Copyright (c) 2015-2023 Jayson Harshbarger
MIT License