Я немного запутался с операторами 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 с меньшим количеством строк кода.
P.S. Также мне интересно, как я могу сделать это с помощью async/await? Спасибо
init()
? - person a better oliver   schedule 16.05.2018return
не нужен. Я обновил вопрос и удалилreturn
- person mr__brainwash   schedule 16.05.2018