То, что я пытаюсь достичь, это поместить несколько наблюдаемых http-запросов в массив, а затем объединить все ответы и вернуть с одной наблюдаемой.
Поскольку все http-запросы разрешаются с одним и тем же типом 'User', я просто хочу подождать, пока все они разрешатся, и затем я могу вернуть одну наблюдаемую для всех пользователей функцию getUsers ().
Я застрял в части return merge(observableRequests)
, так как не могу правильно определить тип возвращаемого значения и не слишком разбираюсь в функциях Rxjs.
Вот три мои связанные функции.
getMyUser(): Observable<User> {
return this.service.get(`${this._userPath}me`).pipe(
map((serviceUser: any) => {
return parseUser(serviceUser);
}));
}
getUsers(): Observable<User[]> {
return this.getMyUser()
.pipe(switchMap((user: User) => {
const activeProvidersIds = this._getActiveProvidersIds(user.providers);
const observableRequests = activeProvidersIds.map((id: number) => this.getUserRequest(id));
return merge(observableRequests);
}));
}
getUserRequest(facDbk: number): Observable<User[]> {
return this.service.get(`${this._providerPath}${facDbk}/users`).pipe(
map((serviceUsers: any) => {
return parseUsers(serviceUsers);
})
);
}
Любая помощь приветствуется.