toStream
Provides a shorthand for creating a stream from observable objects, properties and events.
canStream.toStream( observable, propAndOrEvent )
Creates a stream from a can-compute compute or an observable. This stream gets updated whenever the observable value changes.
var compute = require('can-compute');
var canStreamKefir = require('can-stream-kefir');
var canStream = require('can-stream');
var canStreaming = canStream(canStreamKefir);
var c1 = compute(0);
var resultCompute = canStreaming.toStream(c1);
resultCompute.onValue(function (val) {
console.log(val);
});
c1(1);
Parameters
- compute
{can-compute}
:A compute whose value will be the stream values.
Returns
{Stream}
:
A stream object.
canStream.toStream( observable, "eventName" )
Creates an event stream with the event objects dispatched on obs
for eventName
.
This is a shorthand for [can-stream.toStreamFromEvent].
var DefineList = require('can-define/list/list');
var canStream = require('can-stream-kefir');
var canStream = require('can-stream');
var canStreaming = canStream(canStreamKefir);
var hobbies = new DefineList(["js","kayaking"]);
var changeCount = canStreaming.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
- observable
{Observable}
:An observable object like a can-define/map/map. Promises can work too.
- eventName
{String}
:An observable event name.
Returns
{String}
:
A stream make up of the event objects dispatched on obs
.
canStream.toStream( observable, ".propName" )
Creates a stream from an observable property value. This is a shorthand for [can-stream.toStreamFromProperty].
var canStreamKefir = require('can-stream-kefir');
var canStream = require('can-stream');
var canStreaming = canStream(canStreamKefir);
var DefineMap = require("can-define/map/map");
var person = new DefineMap({
first: "Justin",
last: "Meyer"
});
var first = canStreaming.toStream(person, '.first'),
last = canStreaming.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"
Returns
{String}
:
A stream of values at the specified propName
.
canStream.toStream( obs, ".propName eventName" )
Creates a stream from an observable property value. This is a shorthand for the second signature of [can-stream.toStreamFromEvent].
var canStreamKefir = require('can-stream-kefir');
var canStream = require('can-stream');
var canStreaming = canStream(canStreamKefir);
var DefineMap = require("can-define/map/map");
var DefineList = require("can-define/list/list");
var me = new DefineMap({
todos: ["mow lawn"]
});
var addStream = canStreaming.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 stream of the eventName
event objects dispatched on the objects specified by propName
.