Rx.Observable.fromEvent(element, eventName, [selector])
从DOM事件或Node EventEmitter事件或其他事件创建一个Observable。
请注意,这里使用jQuery,Zepto,Backbone.Marionette,AngularJS和Ember.js库的方法,如果不存在,将会自动使用原生事件绑定。如果使用的是AMD可能需要包含这些库在你requirejs配置文件RxJs的依赖。RxJs将在决定使用哪个库时,试图检测到它们的存在。
参数
element
(Any
): DOMElement,事件目标,Node.js EventEmitter,NodeList或HTMLCollection来附加事件处理程序。eventName
(String
): 事件名[selector]
(Function
): 后期处理结果的可选功能。它接受来自事件处理程序的参数,并返回一个值。
返回值
(Observable
): observable
例
通过 jQuery封装事件
使用Node.js的EventEmitter
作为选择器函数(这不是必须的)。
var EventEmitter = require('events').EventEmitter,
Rx = require('rx');
var eventEmitter = new EventEmitter();
var source = Rx.Observable.fromEvent(
eventEmitter,
'data',
function (args) {
return { foo: args[0], bar: args[1] };
});
var subscription = source.subscribe(
function (x) {
console.log('Next: foo -' x.foo + ', bar -' + x.bar);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
});
eventEmitter.emit('data', 'baz', 'quux');
// => Next: foo - baz, bar - quux