A observable value representation
var Observable = require("observ")
var v = Observable("initial value")
var stopListening = v(function onchange(newValue) {
assert.equal(newValue, "new value")
})
v.set("new value")
var curr = v()
assert.equal(curr, "new value")
stopListening()
Both observ
& observable
have the same interface of
thing()
gets the valuething.set(...)
sets the valuething(function (value) { ... })
listens to the value.
The way observ
and observable
differ is in listening.
observ
will ONLY call the listener if.set()
is invoked.observable
calls the listener IMMEDIATELY and calls it whenever.set()
is invoked
observ
can be used in a similar fashion to observable
by using
var watch = require("observ/watch")
. You can then just
watch(thing, function (value) { ... })
and it will call the
listener immediately
Both observ
& observable
have a computed method with the same
interface.
require("observable").compute
require("observ/computed")
var Observable = require("observ")
var computed = require("observ/computed")
var one = Observable(1)
var two = Observable(2)
var together = computed([one, two], function (a, b) {
return a + b
})
assert.equal(together(), 3)
two.set(5)
assert.equal(together(), 7)
type Observable<A> :
(() => A) &
((Function<A>) => void) & {
set: (A) => void
}
observ : (A) => Observable<A>
observ/computed : (
sources: Array<Observ<T>>,
lambda: (...args: T) => S
) => Observ<S>
npm install observ
- Raynos