Angular 2 个 rxjs 嵌套 Observable

Angular 2 rxjs nested Observables

我希望创建一个 return 是 Observable<any> 的函数,但在 return 之前必须完成另一个异步任务(Observable<string>),以便要传递给 returned Observable.

的值
 @Injectable()
 export class MyComponent
 {

      GetAuthToken = function() : Observable<string>
      {
           return this._storageService.GetAsString('authToken');
      }

      GetData = function(authToken) : Observable<any>
      {

           let headers = new Headers();
           headers.append('authToken', authToken);
           var getUsers = this._http.get('/api/endpoint', { headers: headers })
                 .map((resonse: Response) => resonse.json()));

           return getUsers;        
      }


      DoIt = function() : Observable<any>
      {
          this.GetAuthToken ().Subsribe(t=> {
              return GetData(t); 
          })
      }          


 }

因此,我不想将 authToken 参数传递给 GetData 函数,而是希望在 GetData 函数中执行 GetAuthToken 函数,等待其完成,然后仍然 return http observable。

执行 DoIt 函数会 return 订阅者,而不是 GetData Observable

尝试使用 concatMap():

DoIt() : Observable<any>
{
    return this.GetAuthToken()
        .concatMap(token => this.GetData(token)); 
}   

这也可以使用 flatMap

DoIt() : Observable<any>
{
    return this.GetAuthToken()
        .flatMap(token => this.GetData(token)); 
}