Я вызываю метод loadParticipant
два раза в двух отдельных компонентах, он выполняется почти одновременно, несмотря на сохранение Observable в переменной, api вызывается несколько раз.Это решение работало в вызовах AngularJs и Promises, но теперь, конечно, я хочу использовать Observables:)
Я пытался добавить debouncetime и поделиться параметрами после map
return (this.loadParticipantObservable = this.sharedEndpoints.getParticipant().map((response) => {
this.loadParticipantObservable = null;
return (this.participant = response);
})).share().debounceTime(1000);
фактический код метода loadParticipant
public loadParticipant(): Observable<DTO<PersonModel>> {
if (this.participant) {
return new BehaviorSubject<DTO<PersonModel>>(this.participant);
}
if (this.loadParticipantObservable) {
return this.loadParticipantObservable;
}
return (this.loadParticipantObservable =
this.sharedEndpoints.getParticipant().map((response) => {
this.loadParticipantObservable = null;
return (this.participant = response);
}));
}
пример Как я вызываю метод loadParticipant
this.sharedService.loadParticipant().subscribe((response: DTO<PersonModel>) => {
...
});
В то же время Observable не равен NULL, код входит в это условие и выполняет
return this.loadParticipantObservable;
Я проверил это в отладчике.
Это возвращает меня, только наблюдаемый, но, к сожалению, этот код вызывает код ниже этого возврата, который вызывает реальную конечную точку из бэкэнда