12345678910111213141516171819202122232425262728293031323334 |
- 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
|