tsbase
Version:
Base class libraries for TypeScript
66 lines • 2.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Observable = void 0;
var tslib_1 = require("tslib");
var Guid_1 = require("../../System/Guid");
var Command_1 = require("../CommandQuery/Command");
var BaseObservable_1 = require("./BaseObservable");
var Observable = /** @class */ (function (_super) {
tslib_1.__extends(Observable, _super);
function Observable() {
return _super !== null && _super.apply(this, arguments) || this;
}
Observable.prototype.Subscribe = function (func, useCurrentIssue) {
if (useCurrentIssue === void 0) { useCurrentIssue = true; }
var subscriptionId = Guid_1.Guid.NewGuid();
this.subscribers.set(subscriptionId, func);
if (useCurrentIssue && this.CurrentIssue) {
func(this.CurrentIssue);
}
return subscriptionId;
};
Observable.prototype.Order = function (func, useCurrentIssue) {
var _this = this;
if (useCurrentIssue === void 0) { useCurrentIssue = true; }
var subscriptionId = Guid_1.Guid.NewGuid();
var orderFunction = function (content) {
func(content);
_this.Cancel(subscriptionId);
};
this.subscribers.set(subscriptionId, orderFunction);
if (useCurrentIssue && this.CurrentIssue) {
orderFunction(this.CurrentIssue);
}
};
Observable.prototype.Publish = function (content) {
var e_1, _a;
if (this.active) {
this.CurrentIssue = content;
var _loop_1 = function (element) {
var key = element[0];
var func = element[1];
var result = new Command_1.Command(function () { return func(content); }).Execute();
if (!result.IsSuccess) {
this_1.Cancel(key);
}
};
var this_1 = this;
try {
for (var _b = tslib_1.__values(this.subscribers), _c = _b.next(); !_c.done; _c = _b.next()) {
var element = _c.value;
_loop_1(element);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
}
};
return Observable;
}(BaseObservable_1.BaseObservable));
exports.Observable = Observable;
//# sourceMappingURL=Observable.js.map