This is RxJS v 4. Find the latest version here
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.
addHandler
(Function
): The DOMElement, NodeList or EventEmitter to attach a listener.[removeHandler]
(Function
): The optional function to remove a handler from an emitter.[selector]
(Function
): A selector which takes the arguments from the event handler to produce a single item to yield on next.
(Observable
): An observable sequence of events from the specified element and the specified event.
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: %s', 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 (foo, bar) {
return foo + ',' + bar;
}
);
var subscription = source.subscribe(
function (result) {
console.log('Next: %s', result);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
e.emit('data', 'foo', 'bar');
// => Next: foo,bar
File:
Dist:
Prerequisites:
- If using rx.async.js | rx.async.compat.js
rx
.lite.js | rx.lite.compat.js
NPM Packages:
NuGet Packages:
Unit Tests: