Я пытаюсь настроить рецепт RxJs для выполнения некоторых шагов и выполнения операций условно на основе результатов некоторых подписок.
Псевдокод:
if (trySocialSign() succeeds) {
if (tryGetUserFromDatabase() succeeds) {
do.some.stuff
return
} else {
do.other.stuff
}
}
Прямо сейчас у меня есть эта уродливая функция, которая работает, но мне интересно, есть ли более красивый способ использования каналов и карт и других операторов rxjs, чтобы иметь возможность достичь того же эффекта более идиоматическим способом с меньшим количеством вложений.Может кто-нибудь, пожалуйста, помогите мне?
this.auth.getCurrentUserAsync().subscribe(
(u: EasyAuthUser) => {
this.currentUser = u;
this.users.getUser().subscribe(
(user: User) => {
this.onExistingUserSignIn.emit(user);
},
(err: HttpErrorResponse) => {
if (redirected) {
this.onSignIn.emit(u);
}
}
);
},
(err: HttpErrorResponse) => {this.handleHttpError(err)}
)