У меня возникают трудности с использованием мощности Observables
, т.е. RxJs 6
, чтобы правильно pipe, tap, map, mergemap
или что-то еще, что я запрашивал HttpClient
. Версия ад со всеми различными функциями делает ее не очень простой ...
Итак, мне нужно сначала выполнить вызов REST, а затем, в зависимости от результата, вероятно, выполнить второй вызов REST и сопоставить два потенциально полученных объекта данных в одном новом объекте данных. Функция должна вернуть Observable
.
Итак, в настоящее время я решил это с помощью subject
, что я могу делать вручную / последовательно то, что мне нужно. Функция возвращает Subject
, в данном случае не Observable. Но поскольку вызывающий абонент просто подписывается на эту функцию, она работает. Следует отметить, что две сервисные функции ниже (userService.loadUserDetails()
и adminService.getAdminData()
) просто возвращают наблюдаемые, которые они получают от HttpClient
.
Так может ли кто-нибудь помочь мне перевести этот пример кода ниже в типичный код RxJs 6?
myFunction(): Observable<any> {
const s = new Subject();
let obj: any = {};
this.userService.loadUserDetails().subscribe((userDetails) => {
obj.user = userDetails;
if (userDetails.authorities.includes('ADMIN')) {
this.adminService.getAdminData().subscribe((adminData) => {
obj.adminData = adminData;
s.next(obj);
s.complete();
});
} else {
s.next(obj);
s.complete();
}
});
return s;
}