47 lines
2.0 KiB
JavaScript
47 lines
2.0 KiB
JavaScript
"use strict";
|
|
var __extends = (this && this.__extends) || function (d, b) {
|
|
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
var Observable_1 = require('../Observable');
|
|
var Subscription_1 = require('../Subscription');
|
|
var tryCatch_1 = require('../util/tryCatch');
|
|
var errorObject_1 = require('../util/errorObject');
|
|
var FromEventPatternObservable = (function (_super) {
|
|
__extends(FromEventPatternObservable, _super);
|
|
function FromEventPatternObservable(addHandler, removeHandler, selector) {
|
|
_super.call(this);
|
|
this.addHandler = addHandler;
|
|
this.removeHandler = removeHandler;
|
|
this.selector = selector;
|
|
}
|
|
FromEventPatternObservable.create = function (addHandler, removeHandler, selector) {
|
|
return new FromEventPatternObservable(addHandler, removeHandler, selector);
|
|
};
|
|
FromEventPatternObservable.prototype._subscribe = function (subscriber) {
|
|
var addHandler = this.addHandler;
|
|
var removeHandler = this.removeHandler;
|
|
var selector = this.selector;
|
|
var handler = selector ? function (e) {
|
|
var result = tryCatch_1.tryCatch(selector).apply(null, arguments);
|
|
if (result === errorObject_1.errorObject) {
|
|
subscriber.error(result.e);
|
|
}
|
|
else {
|
|
subscriber.next(result);
|
|
}
|
|
} : function (e) { subscriber.next(e); };
|
|
var result = tryCatch_1.tryCatch(addHandler)(handler);
|
|
if (result === errorObject_1.errorObject) {
|
|
subscriber.error(result.e);
|
|
}
|
|
subscriber.add(new Subscription_1.Subscription(function () {
|
|
//TODO: determine whether or not to forward to error handler
|
|
removeHandler(handler);
|
|
}));
|
|
};
|
|
return FromEventPatternObservable;
|
|
}(Observable_1.Observable));
|
|
exports.FromEventPatternObservable = FromEventPatternObservable;
|
|
//# sourceMappingURL=FromEventPatternObservable.js.map
|