bacon.combines v0.1.3
TODO: convert doc from Kefir version
The default export of this library
import K from "bacon.combines"is a special purpose Bacon observable combinator designed for combining properties for a sink that accepts both observables and constant values such as VDOM extended to accept observables.
Unlike typical observable combinators, when K is invoked with only constants
(no observables), then the result is computed immediately and returned as a
plain value. This optimization eliminates redundant observables.
The basic semantics of K can be described as
K(x1, ..., xN, fn) === combine([x1, ..., xN], fn).skipDuplicates(identical)where combineWith
and skipDuplicates come
from Kefir and identical
from Ramda. Duplicates are skipped, because that can
reduce unnecessary updates. Ramda's identical provides a semantics of
equality that works well within the context of embedding properties to VDOM.
Unlike with combine, any argument
of K is allowed to be
- a constant,
- an observable (including the combiner function), or
- an array or object containing observables.
In other words, K also provides functionality similar
to
combineTemplate.
Note: K is carefully optimized for space—if you write equivalent
combinations using Kefir's own operators, they will likely take more memory.