簡體   English   中英

Angular 2 rxjs嵌套Observables

[英]Angular 2 rxjs nested Observables

我希望創建一個返回Observable<any>的函數,但在返回另一個異步任務之前必須完成(一個Observable<string> ),以便將值傳遞給返回的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); 
          })
      }          


 }

因此,我希望在GetData函數中執行GetAuthToken函數,等待其完成,然后仍然返回http observable,而不是將authToken參數傳遞給GetData函數。

執行DoIt函數將返回訂閱者,而不是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)); 
}   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM