我希望创建一个返回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函数.
解决方法
尝试使用
concatMap()
:
DoIt() : Observable<any> { return this.GetAuthToken() .concatMap(token => this.GetData(token)); }