Javascript 如何从subscribe返回observable?
例如,我有如下代码:Javascript 如何从subscribe返回observable?,javascript,angular,typescript,observable,Javascript,Angular,Typescript,Observable,例如,我有如下代码: // angular service post method postUser(): Observable<User> { this.tokenService.getToken().subscribe(token => { // need to return this observable return this.http.post<User>(url, {token}); }) } //角度服务pos
// angular service post method
postUser(): Observable<User> {
this.tokenService.getToken().subscribe(token => {
// need to return this observable
return this.http.post<User>(url, {token});
})
}
//角度服务post方法
姿势():可观察的{
this.tokenService.getToken().subscribe(令牌=>{
//需要返回这个可观察的
返回this.http.post(url,{token});
})
}
您不能,但您可以轻松避免订阅
,而是使用映射
,或执行
postUser(): Observable<User> {
return this.tokenService.getToken().map(token => {
// need to return this observable
return this.http.post<User>(url, {token});
})
}
postaser():可观察{
返回此.tokenService.getToken().map(令牌=>{
//需要返回这个可观察的
返回this.http.post(url,{token});
})
}
您可能需要查看mergeMap
和其他适用于您的用例的可用操作符。
另请参见此处的代码示例
save(person: Person) : Observable<Response>{
return this
.http
.put(`${this.baseUrl}/people/${person.id}`,
JSON.stringify(person),
{headers: this.getHeaders()});
}
保存(个人:个人):可观察{
还这个
.http
.put(`this.baseUrl}/people/${person.id}),
JSON.stringify(person),
{headers:this.getHeaders()});
}
有关更多详细信息,请参阅
和用于管理嵌套的观察值
你的帖子应该会更新数据库。为什么您的方法的参数中没有用户?如果您这样做,返回类型是可观察的,不好:
getUser():可观察{
返回此.accessToken$.pipe(
映射(=>{
返回此.http.get(`${environment.apirl}/user`)
}),
);
}
使用mergeMap
:
getUser(): Observable<User> {
return this.accessToken$.pipe(
mergeMap(_ => {
return this.http.get<User>(`${environment.apiURL}/user`)
}),
);
}
getUser():可观察{
返回此.accessToken$.pipe(
合并映射(=>{
返回此.http.get(`${environment.apirl}/user`)
}),
);
}
有关更多信息,请参阅“”。您可以使用HttpClient执行此操作吗?@Jota.Toledo您认为原因是什么?您代码段的返回类型当前为
Obsevable
已在此处回答了Obsevable
的修复问题:您试图用此代码解决的问题是什么?