2016-02-20 107 views
2

我想運行第一次認證http get函數,一旦成功,然後運行另一個函數,然後返回Observable,所以可以訂閱並繼續與其他方法一起使用。Angular2 Observable

return new Observable(observer => { 
      this.api 
       .login(username, password) 
       .subscribe(
        data => { 
         this.data = this.dataParse(data); 
         observer.next(this.data); 
         observer.complete(); 
        }); 


      // run another http.get to get user profile, before sending back Observable 
     }); 

我不知道如何運行另一個http.get然後返回observable。

我可以運行裏面.subscribe()方法的另一個函數,但它不會與目前的可觀察

回答

3

雖然我沒有試過被鏈接,你需要對管道的登錄運營商鏈的響應。沿着這些線:

return this.api 
      .login(username, password) 
      .map((res:Response) => res.json()) 
      .mergeMap(data=> $http.get(data.id)); 

你不需要創建一個新的Observable。