flow.stop()
The flow.stop() method stops a flow immediately. Its cleanup callbacks are run, and the flow is prevented from ever triggering again.
This method does not interact with the flow pipeline; when called, it stops the flow immediately. After calling it once, doing so again has no effect.
Note: If a flow is created in a monitored context (one monitoring for type "undo" then it is not necessary to manually stop a Flow; when the context is undone, the flow is stopped automatically.
Syntax
flow.stop();
Parameters
None.
Return value
The same Flow
object the method was called on.
Examples
Stop a listener
For the sake of the example, let's set up and take down a listener without the usual methods, i.e. without monitored contexts or .until()
. To do so, we'll need to keep a reference to the Flow
returned by when()
:
const button = document.querySelector('button');
const listener = when(button).clicks().then(() => {
// do thingsā¦
});
Now, with a reference (listener) to the Flow object for the event listener, we can stop it at any point by calling
listener.stop()
If any additional .cleanup()
callbacks were added, then these are run once we .stop() the flow.
Usage notes
Once a flow has been stopped, all references to pipeline callbacks are removed, and no more can be added. Additionally, cleanup callbacks are run synchronously as soon as a flow stops. When a cleanup callback is added after a flow has been stopped, that cleanup callback fires immediately.
A stopped flow is essentially useless, because it can no longer trigger; not even by manually calling flow.now()
. As such, it is not advised to retain references to flows after they have been stopped.
See also