Angular 2 个 rxjs 嵌套 Observable
Angular 2 rxjs nested Observables
我希望创建一个 return 是 Observable<any>
的函数,但在 return 之前必须完成另一个异步任务(Observable<string>
),以便要传递给 returned 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);
})
}
}
因此,我不想将 authToken 参数传递给 GetData 函数,而是希望在 GetData 函数中执行 GetAuthToken 函数,等待其完成,然后仍然 return http observable。
执行 DoIt 函数会 return 订阅者,而不是 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));
}
我希望创建一个 return 是 Observable<any>
的函数,但在 return 之前必须完成另一个异步任务(Observable<string>
),以便要传递给 returned 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);
})
}
}
因此,我不想将 authToken 参数传递给 GetData 函数,而是希望在 GetData 函数中执行 GetAuthToken 函数,等待其完成,然后仍然 return http observable。
执行 DoIt 函数会 return 订阅者,而不是 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));
}