/
moreqqq
/
DeliveryService
Обзор
Документация
Войти
/
moreqqq
/
DeliveryService
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
server/node_modules/rxjs/src/internal/testing/HotObservable.ts
53 строки
2 KB
moreqqq
написал приложение
29 май 2026, 22:02
29 май 2026, 22:02
ad51790
Код
Авторство
О чём код?
import { Subject } from '../Subject'; import { Subscriber } from '../Subscriber'; import { Subscription } from '../Subscription'; import { Scheduler } from '../Scheduler'; import { TestMessage } from './TestMessage'; import { SubscriptionLog } from './SubscriptionLog'; import { SubscriptionLoggable } from './SubscriptionLoggable'; import { applyMixins } from '../util/applyMixins'; import { observeNotification } from '../Notification'; export class HotObservable<T> extends Subject<T> implements SubscriptionLoggable { public subscriptions: SubscriptionLog[] = []; scheduler: Scheduler; // @ts-ignore: Property has no initializer and is not definitely assigned logSubscribedFrame: () => number; // @ts-ignore: Property has no initializer and is not definitely assigned logUnsubscribedFrame: (index: number) => void; constructor(public messages: TestMessage[], scheduler: Scheduler) { super(); this.scheduler = scheduler; } /** @internal */ protected _subscribe(subscriber: Subscriber<any>): Subscription { const subject: HotObservable<T> = 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; /* tslint:disable:no-var-keyword */ for (let i = 0; i < messagesLength; i++) { (() => { const { notification, frame } = subject.messages[i]; /* tslint:enable */ subject.scheduler.schedule(() => { observeNotification(notification, subject); }, frame); })(); } } } applyMixins(HotObservable, [SubscriptionLoggable]);