例如,我有这样的代码:
// angular service post method
postUser(): Observable<User> {
this.tokenService.getToken().subscribe(token => {
// need to return this observable
return this.http.post<User>(url, {token});
})
}
答案 0 :(得分:2)
您不能,但您可以轻松避开subscribe
,而是使用map
或do
postUser(): Observable<User> {
return this.tokenService.getToken().map(token => {
// need to return this observable
return this.http.post<User>(url, {token});
})
}
您可能希望查看mergeMap
以及其他可用的运算符以及您的用例。
另请参阅https://www.learnrxjs.io/operators/transformation/mergemap.html
答案 1 :(得分:0)
这是一个代码示例
save(person: Person) : Observable<Response>{
return this
.http
.put(`${this.baseUrl}/people/${person.id}`,
JSON.stringify(person),
{headers: this.getHeaders()});
}
有关详细信息,请参阅here。
使用switchMap来管理嵌套的Observable。
您的帖子应该更新数据库。为什么没有用户参与您的方法?
答案 2 :(得分:0)
如果执行此操作,则返回类型为Observable<Observable<User>>
,效果不佳:
getUser(): Observable<Observable<User>> {
return this.accessToken$.pipe(
map(_ => {
return this.http.get<User>(`${environment.apiURL}/user`)
}),
);
}
使用mergeMap
:
getUser(): Observable<User> {
return this.accessToken$.pipe(
mergeMap(_ => {
return this.http.get<User>(`${environment.apiURL}/user`)
}),
);
}
有关更多信息,请参阅“ Flattening nested Observables”。