Я пытаюсь использовать concatMap
, чтобы позволить мне запускать запросы в последовательном порядке без необходимости визуально подписываться на каждый отправляемый запрос.
Все работает нормально, однако при возникновении ошибки он продолжает работать через канал, который я не хочу.
Если это не удается, я просто хочу отменить все запросы, остановить его выполнение и что-то отобразить. Я пытался catchError
, однако, это не работает / делает то, что я хочу.
Возьмите этот пример ...
Я хочу сбросить пароль пользователя, после сброса пароля я хочу POST
до конечной точки /password/resets
, затем я хочу автоматически войти в систему пользователя, поэтому для этого я хочу отправить сообщение на /auth/login
и Затем я хочу получить пользователя GET - /user
, чтобы использовать его в приложении. Если запрос не удается на любом этапе. Я хочу остановить каналы и выдать общую ошибку, которая показана внизу вопроса.
this.userService.resetPassword(password)
.pipe(concatMap(() => this.authService.login(user.email, password)))
.pipe(concatMap(() => this.userService.me()))
.subscribe((user: User) => {
this.userService.setUser(user);
});
Пример:
this.userService.resetPassword(password)
.pipe(concatMap(() => this.authService.login(user.email, password)))
<-- IF IT FAILS ON THE ABOVE / ANY REQUEST I WANT TO STOP ALL REQUESTS AND SHOW NOTIFICATION -->
.pipe(concatMap(() => this.userService.me()))
.subscribe((user: User) => {
this.userService.setUser(user);
});
Ниже приведен фрагмент кода, который я хочу запустить при ошибке -
this.notificationService.notify('Unable to reset password, please try again.');