Skip to content

calmm-js/bacon.combines

Repository files navigation

npm version Bower version Build Status Code Coverage

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.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published