toStream
Provides a shorthand for creating a stream from observable objects, properties and events.
canStream.toStream( compute )
Creates a stream from a can-compute compute. This stream gets updated whenever the compute value changes.
var compute = require('can-compute');
var canStream = require('can-stream-kefir');
var c1 = compute(0);
var resultCompute = canStream.toStream(c1);
resultCompute.onValue(function (val) {
console.log(val);
});
c1(1);
Parameters
- compute
{can-compute}
:A compute whose value will be the stream values.
canStream.toStream( obs, "eventName" )
Creates an event stream with the event objects dispatched on obs
for eventName
.
This is a shorthand for [can-stream-kefir.toStreamFromEvent].
var DefineList = require('can-define/list/list');
var canStream = require('can-stream-kefir');
var hobbies = new DefineList(["js","kayaking"]);
var changeCount = canStream.toStream(hobbies, "length").scan(function(prev){
return prev + 1;
}, 0);
changeCount.onValue(function(event) {
console.log(event);
});
hobbies.push("bball")
//-> console.logs {type: "add", args: [2,["bball"]]}
hobbies.shift()
//-> console.logs {type: "remove", args: [0,["js"]]}
Parameters
- obs
{Observable}
:An observable object like a can-define/map/map. Promises can work too.
- eventName
{String}
:An observable event name.
canStream.toStream( obs, ".propName" )
Creates a stream from an observable property value. This is a shorthand for [can-stream-kefir.toStreamFromProperty].
var canStream = require('can-stream-kefir');
var DefineMap = require("can-define/map/map");
var person = new DefineMap({
first: "Justin",
last: "Meyer"
});
var first = canStream.toStream(person, '.first'),
last = canStream.toStream(person, '.last');
var fullName = Kefir.combine(first, last, function(first, last){
return first + last;
});
fullName.onValue(function(newVal){
console.log(newVal);
});
map.first = "Payal"
//-> console.logs "Payal Meyer"
Create a stream based on a event on an observable property.
Parameters
- obs
{Observable}
:An observable object like a can-define/map/map. Promises can work too.
- propName
{String}
:A property name. Multiple property names can be provided like
".foo.bar.car"
canStream.toStream( obs, ".propName eventName" )
Creates a stream from an observable property value. This is a shorthand for the second signature of [can-stream-kefir.toStreamFromEvent].
var canStream = require('can-stream-kefir');
var DefineMap = require("can-define/map/map");
var DefineList = require("can-define/list/list");
var me = new DefineMap({
todos: ["mow lawn"]
});
var addStream = canStream.toStream(me, ".todos add");
addStream.onValue(function(event){
console.log(event);
});
map.todos.push("do dishes");
//-> console.logs {type: "add", args: [1,["do dishes"]]}
Create a stream based on a event on an observable property.
Parameters
- obs
{Observable}
:An observable object like a can-define/map/map. Promises can work too.
- propName
{String}
:A property name. Multiple property names can be provided like
".foo.bar.car"
- eventName
{String}
:An observable event name.
Returns
{String}
:
A Kefir stream of the eventName
event objects dispatched on the objects specified by propName
.