如果我们得到正确的响应或错误,如何在订阅响应中实现一个动作?
How to realize an action in a subscribe response in cases we get a correct response or an error?
我正在尝试将加载微调器添加到登录功能。我已经创建了一个名为“loading”的变量,并且我希望当我从服务器获得响应时(不是之前),该变量变为 false(并在 html 中消失)。我使用下一个函数获得结果,将两个响应(正确响应和错误响应)中的变量更改为 false,但我想知道是否有更简洁的方法来做到这一点。
谢谢!
login() {
this.loading = true;
let model: UserLogin = Object.assign({}, this.formGroup.value);
this.accountService.login(model)
.subscribe(
token => {
this.setToken(token);
this.loading = false;
},
error => {
alert(this.errorService.manageError(error)[""]);
this.loading = false;
}
);
}
您可以使用 RxJS finalize
运算符。它会在可观察对象的完成和错误时触发。
import { finalize } from 'rxjs/operators';
login() {
this.loading = true;
let model: UserLogin = Object.assign({}, this.formGroup.value);
this.accountService.login(model).pipe(
finalize(() => this.loading = false)
).subscribe(
token => {
this.setToken(token);
},
error => {
alert(this.errorService.manageError(error)[""]);
}
);
}
我正在尝试将加载微调器添加到登录功能。我已经创建了一个名为“loading”的变量,并且我希望当我从服务器获得响应时(不是之前),该变量变为 false(并在 html 中消失)。我使用下一个函数获得结果,将两个响应(正确响应和错误响应)中的变量更改为 false,但我想知道是否有更简洁的方法来做到这一点。
谢谢!
login() {
this.loading = true;
let model: UserLogin = Object.assign({}, this.formGroup.value);
this.accountService.login(model)
.subscribe(
token => {
this.setToken(token);
this.loading = false;
},
error => {
alert(this.errorService.manageError(error)[""]);
this.loading = false;
}
);
}
您可以使用 RxJS finalize
运算符。它会在可观察对象的完成和错误时触发。
import { finalize } from 'rxjs/operators';
login() {
this.loading = true;
let model: UserLogin = Object.assign({}, this.formGroup.value);
this.accountService.login(model).pipe(
finalize(() => this.loading = false)
).subscribe(
token => {
this.setToken(token);
},
error => {
alert(this.errorService.manageError(error)[""]);
}
);
}