我试图用它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.');