DoneJS StealJS jQuery++ FuncUnit DocumentJS
3.14.1
5.0.0 4.3.0 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-compute
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-stream
      • can-define-stream-kefir
      • can-event
      • can-event/async/async
      • can-event/batch/batch
      • can-event/lifecycle/lifecycle
      • can-kefir
      • can-list
      • can-map
      • can-map-backup
      • can-map-define
      • can-observation
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
        • types
          • makeStream
          • StreamImplementation
          • streamInterface
            • toCompute
            • toStream
            • toStreamFromEvent
            • toStreamFromProperty
      • can-stream-kefir
    • Data Modeling
      • can-connect
      • can-connect-cloneable
      • can-connect-feathers
      • can-connect-ndjson
      • can-connect-signalr
      • can-fixture
      • can-fixture-socket
      • can-ndjson-stream
      • can-set
    • Views
      • can-component
      • can-ejs
      • can-element
      • can-react-component
      • can-stache
      • can-stache/helpers/route
      • can-stache-bindings
      • can-stache-converters
      • can-view-autorender
      • can-view-callbacks
      • can-view-href
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • react-view-model
      • react-view-model/component
      • steal-stache
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-globals
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-string
      • can-string-to-any
      • can-util
      • can-zone
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-control
      • can-dom-events
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-jquery
    • Data Validation
      • can-define-validate-validatejs
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-namespace
      • can-reflect
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

toStream

  • Edit on GitHub

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

  1. 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

  1. observable {Observable}:

    An observable object like a can-define/map/map. Promises can work too.

  2. 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

  1. obs {Observable}:

    An observable object like a can-define/map/map. Promises can work too.

  2. 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

  1. obs {Observable}:

    An observable object like a can-define/map/map. Promises can work too.

  2. propName {String}:

    A property name. Multiple property names can be provided like ".foo.bar.car"

  3. eventName {String}:

    An observable event name.

Returns

{String}:

A stream of the eventName event objects dispatched on the objects specified by propName.

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 3.14.1.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news