我希望創建一個函數,該函數返回Observable<any>
,但在返回另一個異步任務必須完成之前(Observable<string>
),以便將值傳遞給返回的Observable
。Angular 2 rxjs嵌套Observables
@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功能,等待它完成,然後仍返回HTTP觀測。
執行的DOIT函數將返回用戶,而不是的GetData可觀察
完全無關的問題:爲什麼你使用語法:'GetAuthToken = function(){...}'而不是'GetAuthToken(){...}'像其他人一樣(我知道這兩個方法定義是儘管如此)? – martin
使用'Observable.forkJoin',勾選這個:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/forkjoin.md –
@Martin http://stackoverflow.com/questions/336859/javascript-function-declaration-syntax-var -fn-function-vs-function -fn – gunwin