tsbase
Version:
Base class libraries for TypeScript
42 lines • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Observable = void 0;
const Guid_1 = require("../../System/Guid");
const Command_1 = require("../CommandQuery/Command");
const BaseObservable_1 = require("./BaseObservable");
class Observable extends BaseObservable_1.BaseObservable {
Subscribe(func, useCurrentIssue = true) {
const subscriptionId = Guid_1.Guid.NewGuid();
this.subscribers.set(subscriptionId, func);
if (useCurrentIssue && this.CurrentIssue) {
func(this.CurrentIssue);
}
return subscriptionId;
}
Order(func, useCurrentIssue = true) {
const subscriptionId = Guid_1.Guid.NewGuid();
const orderFunction = (content) => {
func(content);
this.Cancel(subscriptionId);
};
this.subscribers.set(subscriptionId, orderFunction);
if (useCurrentIssue && this.CurrentIssue) {
orderFunction(this.CurrentIssue);
}
}
Publish(content) {
if (this.active) {
this.CurrentIssue = content;
for (const element of this.subscribers) {
const key = element[0];
const func = element[1];
const result = new Command_1.Command(() => func(content)).Execute();
if (!result.IsSuccess) {
this.Cancel(key);
}
}
}
}
}
exports.Observable = Observable;
//# sourceMappingURL=Observable.js.map