[英]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.