UNPKG

tsbase

Version:

Base class libraries for TypeScript

42 lines 1.51 kB
"use strict"; 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