【发布时间】:2020-12-10 23:34:45
【问题描述】:
我有 user.service.ts 我有 http 请求的方法并返回一个 Observable。
getUser(userId): Observable<IUser> {
return this._httpClient.get(_apiParameters.url + '/users/' + userId, httpOptions)
.pipe(map((res: IUser) => {
return res;
})
);
}
在我的 user.conponent.ts 中,我有方法 method1()、method2()、method3(),我订阅了 userService.getUser(userId)
method1() {
this.userService.getUser(userId).subscribe(res => {
this.user = res;
})
}
method2() {
this.userService.getUser(userId).subscribe(res => {
this.user = res;
})
showCredit();
}
method3() {
this.userService.getUser(userId).subscribe(res => {
this.user = res;
addCredit(this.user.id);
})
}
但是在订阅的 method3() 中我有 this.user = res;和 addCredit(this.user.id); 我试过了
initializeUser() {
this.userService.getUser(userId).subscribe(res => {
this.user = res;
})
}
然后在其他所有方法中调用 initializeUser(),但在这种情况下,我会丢失 addCredit(this.user.id);我需要响应中的“id”。
我如何编写代码,这样我就不会在每个方法中重复订阅并等待订阅,所以我可以在 method3() 中调用 addCredit(this.user.id);
【问题讨论】:
-
您可以简单地向函数添加一个参数,并根据该参数有条件地调用 addCredit。
标签: angular async-await observable subscribe