@cycle/core
Version:
The Cycle run() function meant to be used with RxJS v4
66 lines (46 loc) • 2.2 kB
Markdown
# `Cycle` API
- [`Cycle`](#Cycle)
- [`run`](#run)
### <a id="Cycle"></a> `Cycle(main, drivers)`
A function that prepares the Cycle application to be executed. Takes a `main`
function and prepares to circularly connects it to the given collection of
driver functions. As an output, `Cycle()` returns an object with three
properties: `sources`, `sinks` and `run`. Only when `run()` is called will
the application actually execute. Refer to the documentation of `run()` for
more details.
**Example:**
```js
const {sources, sinks, run} = Cycle(main, drivers);
// ...
const dispose = run(); // Executes the application
// ...
dispose();
```
#### Arguments:
- `main :: Function` a function that takes `sources` as input and outputs a collection of `sinks` Observables.
- `drivers :: Object` an object where keys are driver names and values are driver functions.
#### Return:
*(Object)* an object with three properties: `sources`, `sinks` and `run`. `sources` is the collection of driver sources, `sinks` is the
collection of driver sinks, these can be used for debugging or testing. `run`
is the function that once called will execute the application.
- - -
### <a id="run"></a> `run(main, drivers)`
Takes a `main` function and circularly connects it to the given collection
of driver functions.
**Example:**
```js
const dispose = Cycle.run(main, drivers);
// ...
dispose();
```
The `main` function expects a collection of "source" Observables (returned
from drivers) as input, and should return a collection of "sink" Observables
(to be given to drivers). A "collection of Observables" is a JavaScript
object where keys match the driver names registered by the `drivers` object,
and values are the Observables. Refer to the documentation of each driver to
see more details on what types of sources it outputs and sinks it receives.
#### Arguments:
- `main :: Function` a function that takes `sources` as input and outputs a collection of `sinks` Observables.
- `drivers :: Object` an object where keys are driver names and values are driver functions.
#### Return:
*(Function)* a dispose function, used to terminate the execution of the Cycle.js program, cleaning up resources used.