Angular / rxjs6-在PUT之前获取

时间:2018-08-17 10:48:10

标签: angular rxjs

在输入(编辑)某些记录之前,我将从数据库中获取新数据。

服务:

getVotes(): Observable<Vote> {
  return this._http.get<Vote>(url);
}

putVote(choose: string){
 this.getVotes().subscribe(
  result => {
    ...
    return this._http.put<Vote>(url + object).subscribe();
  }
 )
}

现在它可以工作了,但我认为putVote()应该返回Observable<Vote>,那么如何从内部getVotes()返回?

2 个答案:

答案 0 :(得分:2)

您应该使用getVote()映射来自switchMap的响应,并从http.put()删除订阅以从putVote()返回Observable

putVote(choose: string){
 return this.getVotes().pipe(switchMap(
  result => {
    ...
    return this._http.put<Vote>(url + object);
  }
 ))
}

答案 1 :(得分:0)

您可以尝试以下代码吗?

getVotes(): Observable<Vote> {
  return this._http.get<Vote>(url);
}

putVote(choose: string): Observable<Vote> {
 this.getVotes().subscribe(
  result => {
    ...
    return this._http.put<Vote>(url + object).subscribe();
  }
 )
}