Я немного запутался с операторами rxjs.У меня есть несколько вызовов API, которые возвращают наблюдаемые:
getCurrentUser(): Observable<any> {
return this.http.get<any>(userUrl);
}
tagsList(): Observable<string[]> {
return this.http.get<string[]>(tagsUrl);
}
timezonesList(): Observable<Timezone[]> {
return this.http.get<Timezone[]>(timezonesUrl);
}
Я хочу позвонить getCurrentUser()
затем с результатом возврата значения действия вызова LoadUser(user)
Затем после загрузки пользователем вызовите несколько асинхронных запросов одновременно:
tagsList(), timezonesList()
А потом с результатами возврата значения из них вызвать действия LoadTags(tags), LoadTimezones(timezones)
Так должно выглядеть примерно так:
init() {
this.accountsApi.getCurrentUser()
.map((user: User) => this.store.dispatch(new LoadUser({ user })))
.map(
this.commonApi.tagsList(),
this.commonApi.timezonesList(),
this.commonApi.authoriztionServicesList()
)
.map((tags, timezones, authorizationServices) => {
this.store.dispatch(new tagsActions.LoadTags(tags));
this.store.dispatch(new timezonesActions.LoadTimezones(timezones));
this.store.dispatch(new authorizationServicesActions.LoadAuthorizationServices(authorizationServices));
});
}
Я знаю, что этооператоры не правы.Какие операторы я должен использовать для этого?Я уже сделал это с обещаниями, но я уверен, что я могу сделать это с операторами rxjs в меньшей строке кода.
PS Также мне интересно, как я могу сделать это с помощью async / await?Спасибо