Угловой RxJS: Hot Observable превратился в Cold - PullRequest
1 голос
/ 28 мая 2019

Это мой связанный код:

private searchClickSubject:Subject<void>;  // Submit form
private searchClick$:Observable<any>;
private metrics$:Observable<MetricGroup>;

constructor() {
    // Prepare observers
    this.searchClickSubject = new Subject<void>();
    this.searchClick$ = this.searchClickSubject.asObservable();
}

public ngOnInit() {
    // Grab search button click event
    this.searchQuery$ = this.searchClick$.pipe(
        map(() => <Query>{
            offset: 0,
            limit: AmetriquesComponent.DEFAULT_PAGE_SIZE
        })
    );

    const loading = () => tap(() => this.loadingPage());
    const getAggregatedMetrics = () => switchMap((query: Query) => this.service.getAggregatedMetrics(query));
    const loaded = () => tap((aggregatedMetrics: MetricGroup) => this.loadedMetric(aggregatedMetrics));

    this.metrics$ = this.searchQuery$
        .pipe(
            loading(),
            getAggregatedMetrics(),
            loaded(),
            share()
        );
}

Прежде всего, я думаю, searchClick$ Observable является горячим, так как форма генерируется при отправке событий независимо от того, к какой подписке присоединена.

Как видите, после отправки события submit я отправляю http-запрос.Поэтому для каждой отправляемой «формы отправки» отправляется новый http-запрос.

Когда я присоединяю подписку к этому последнему Observable, создается отдельный http-запрос, поэтому похоже, что в первом Observable включен холодный Observable..

Что вы думаете о моей череде мыслей?

1 Ответ

0 голосов
/ 28 мая 2019

Я все еще вижу это как горячую наблюдаемую, так как она никогда не выдаст полное уведомление.Внутренняя подписка getAggregatedMetrics будет излучать единицу, но не внешнюю.Также share() превращается в холодные наблюдаемые горячие в этой статье .Если я не понимаю вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...