Это мой связанный код:
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..
Что вы думаете о моей череде мыслей?