when
when<
E
>(test
: (ev
:E
) =>any
,entryListener
:EntryListener
<E
>): (ev
:E
) =>void
Defined in: extras/when.ts:36
Creates a conditional entry/exit listener for an event.
When the test function returns true for an event, the entryListener is called and may return an exitListener. The exitListener (if returned) will be called on the next event before re-evaluating the test.
Usage:
when( function testCondition(event) { return true }, function entryListener(event) { // Handle condition entry logic return functionExitListener(exitEvent) { // Handle condition exit logic }; })
Type Parameters
Section titled “Type Parameters”Type Parameter | Description |
---|---|
E | The event type. |
Parameters
Section titled “Parameters”Parameter | Type | Description |
---|---|---|
test | (ev : E ) => any | Function to test whether to trigger the entryListener. |
entryListener | EntryListener <E > | Function called when test passes; may return an exitListener. |
Returns
Section titled “Returns”A function to handle events, managing entry and exit listeners based on the test.
(
ev
:E
):void
Parameters
Section titled “Parameters”Parameter | Type |
---|---|
ev | E |
Returns
Section titled “Returns”void
Example
Section titled “Example”const teardown = setup(machine)( effect(whenFromState("Idle", fn)), leave(whenState("Active", fn)), enter(whenEventType("activate", fn)));// Call teardown() to remove listeners
Source
Section titled “Source”Useful for composing conditional event listeners for state machines, enabling modular setup and teardown logic.
export function when<E>(test: (ev: E) => any, entryListener: EntryListener<E>) { let exitListener: void | ((ev: E) => void); return (ev: E) => { if (exitListener) { exitListener(ev); exitListener = undefined; } if (test(ev)) { exitListener = entryListener(ev); } };}