34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { Subject } from '../Subject';
 | |
| import { Subscription } from '../Subscription';
 | |
| import { SubscriptionLoggable } from './SubscriptionLoggable';
 | |
| import { applyMixins } from '../util/applyMixins';
 | |
| export class HotObservable extends Subject {
 | |
|     constructor(messages, scheduler) {
 | |
|         super();
 | |
|         this.messages = messages;
 | |
|         this.subscriptions = [];
 | |
|         this.scheduler = scheduler;
 | |
|     }
 | |
|     _subscribe(subscriber) {
 | |
|         const subject = this;
 | |
|         const index = subject.logSubscribedFrame();
 | |
|         const subscription = new Subscription();
 | |
|         subscription.add(new Subscription(() => {
 | |
|             subject.logUnsubscribedFrame(index);
 | |
|         }));
 | |
|         subscription.add(super._subscribe(subscriber));
 | |
|         return subscription;
 | |
|     }
 | |
|     setup() {
 | |
|         const subject = this;
 | |
|         const messagesLength = subject.messages.length;
 | |
|         for (var i = 0; i < messagesLength; i++) {
 | |
|             (() => {
 | |
|                 var message = subject.messages[i];
 | |
|                 subject.scheduler.schedule(() => { message.notification.observe(subject); }, message.frame);
 | |
|             })();
 | |
|         }
 | |
|     }
 | |
| }
 | |
| applyMixins(HotObservable, [SubscriptionLoggable]);
 | |
| //# sourceMappingURL=HotObservable.js.map
 | 
