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
的修复问题:您试图用此代码解决的问题是什么?