Skip to content

Interface: SignalWatcher

Documentation / @xmachines/play-signals / SignalWatcher

Defined in: packages/play-signals/src/types.ts:167

Watcher for observing signal changes and scheduling effects

Signal.subtle.Watcher enables observing multiple signals and batching updates. This is the low-level primitive used by frameworks to implement reactive effects.

Example

import { Signal } from "@xmachines/play-signals";
const count = new Signal.State(0);
const doubled = new Signal.Computed(() => count.get() * 2);
const watcher = new Signal.subtle.Watcher(() => {
queueMicrotask(() => {
const pending = watcher.getPending();
console.log("Signals changed:", pending.length);
});
});
watcher.watch(count);
watcher.watch(doubled);
count.set(5); // Notification scheduled via microtask

Methods

getPending()

getPending(): (
| SignalState<unknown>
| SignalComputed<unknown>)[];

Defined in: packages/play-signals/src/types.ts:187

Get signals that changed since last check

Returns

( | SignalState<unknown> | SignalComputed<unknown>)[]

Array of signals that have pending updates


unwatch()

unwatch(signal): void;

Defined in: packages/play-signals/src/types.ts:180

Stop watching a signal

Parameters

ParameterTypeDescription
signal| SignalState<unknown> | SignalComputed<unknown>Signal to stop observing

Returns

void


watch()

watch(signal): void;

Defined in: packages/play-signals/src/types.ts:173

Start watching a signal for changes

Parameters

ParameterTypeDescription
signal| SignalState<unknown> | SignalComputed<unknown>Signal to observe (State or Computed)

Returns

void