Spaces:
Running
Running
| import { Observable } from '../Observable'; | |
| import { Subscription } from '../Subscription'; | |
| import { SubscriptionLoggable } from './SubscriptionLoggable'; | |
| import { applyMixins } from '../util/applyMixins'; | |
| import { observeNotification } from '../Notification'; | |
| export class ColdObservable extends Observable { | |
| constructor(messages, scheduler) { | |
| super(function (subscriber) { | |
| const observable = this; | |
| const index = observable.logSubscribedFrame(); | |
| const subscription = new Subscription(); | |
| subscription.add(new Subscription(() => { | |
| observable.logUnsubscribedFrame(index); | |
| })); | |
| observable.scheduleMessages(subscriber); | |
| return subscription; | |
| }); | |
| this.messages = messages; | |
| this.subscriptions = []; | |
| this.scheduler = scheduler; | |
| } | |
| scheduleMessages(subscriber) { | |
| const messagesLength = this.messages.length; | |
| for (let i = 0; i < messagesLength; i++) { | |
| const message = this.messages[i]; | |
| subscriber.add(this.scheduler.schedule((state) => { | |
| const { message: { notification }, subscriber: destination } = state; | |
| observeNotification(notification, destination); | |
| }, message.frame, { message, subscriber })); | |
| } | |
| } | |
| } | |
| applyMixins(ColdObservable, [SubscriptionLoggable]); | |
| //# sourceMappingURL=ColdObservable.js.map |