Skip to content

Latest commit

 

History

History
139 lines (110 loc) · 4.09 KB

fromeventpattern.md

File metadata and controls

139 lines (110 loc) · 4.09 KB

Rx.Observable.fromEventPattern(addHandler, [removeHandler], [selector])

Creates an observable sequence by using the addHandler and removeHandler functions to add and remove the handlers, with an optional selector function to project the event arguments.

Arguments

  1. addHandler (Function): The DOMElement, NodeList or EventEmitter to attach a listener.
  2. [removeHandler] (Function): The optional function to remove a handler from an emitter.
  3. [selector] (Function): A selector which takes the arguments from the event handler to produce a single item to yield on next.

Returns

(Observable): An observable sequence of events from the specified element and the specified event.

Example

Wrapping an event from jQuery

var input = $('#input');

var source = Rx.Observable.fromEventPattern(
    function add (h) {
        input.bind('click', h);
    },
    function remove (h) {
        input.unbind('click', h);
    }
);

var subscription = source.subscribe(
    function (x) {
        console.log('Next: Clicked!');
    },
    function (err) {
        console.log('Error: ' + err);
    },
    function () {
        console.log('Completed');
    });

input.trigger('click');

// => Next: Clicked!

Wrapping an event from the Dojo Toolkit

require(['dojo/on', 'dojo/dom', 'rx', 'rx.async', 'rx.binding'], function (on, dom, rx) {

    var input = dom.byId('input');

    var source = Rx.Observable.fromEventPattern(
        function add (h) {
            return on(input, 'click', h);
        },
        function remove (_, signal) {
            signal.remove();
        }
    );

    var subscription = source.subscribe(
        function (x) {
            console.log('Next: Clicked!');
        },
        function (err) {
            console.log('Error: ' + err);
        },
        function () {
            console.log('Completed');
        });

    on.emit(input, 'click');
    // => Next: Clicked!
});

Using in Node.js with using an EventEmitter.

var EventEmitter = require('events').EventEmitter,
    Rx = require('rx');

var e = new EventEmitter();

// Wrap EventEmitter
var source = Rx.Observable.fromEventPattern(
    function add (h) {
        e.addListener('data', h);
    },
    function remove (h) {
        e.removeListener('data', h);
    },
    function (arr) {
        return arr[0] + ',' + arr[1];
    }
);

var subscription = source.subscribe(
    function (result) {
        console.log('Next: ' + result);
    },
    function (err) {
        console.log('Error: ' + err);
    },
    function () {
        console.log('Completed');
    });

e.emit('data', 'foo', 'bar');
// => Next: foo,bar

Location

File:

Dist:

Prerequisites:

NPM Packages:

NuGet Packages:

Unit Tests: