如何在完成其他可观察时返回Observable

时间:2017-02-18 22:56:41

标签: javascript angular rxjs

我正在扩展一个已经有一个返回Observable的方法的类, 如下所示,我希望在返回第一个observable的结果后(在从另一个服务获得token之后)返回base observable,

所以我开发了如下代码,但是typescript编译器不接受,因为我没有返回Observeable<Response>,它将在subscribe方法中返回

 post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {
    this.tokenService.getToken().subscribe(token => {
      //injecting token into options
      return super.post(url, body, options);
    });

}

此外,我尝试创建一个新的Observable,如下所示,但仍然没有机会

post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {
     return new Observable<Response>(observer => {
        this.tokenService.getToken().subscribe(token => {
          //injecting token into options
          //observer.complete??? super.post(url, body, options);
        });

    });
  }

1 个答案:

答案 0 :(得分:4)

使用flatMap将一个observable转换为另一个observable:

post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {
    return this.tokenService.getToken().flatMap(token => {
      //injecting token into options
      return super.post(url, body, options);
    });
}