我正在扩展一个已经有一个返回Observable
的方法的类,
如下所示,我希望在返回第一个observable的结果后(在从另一个服务获得token
之后)返回base observable,
所以我开发了如下代码,但是typescript编译器不接受,因为我没有返回Observeable<Response>
,它将在subscribe
方法中返回
post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {
this.tokenService.getToken().subscribe(token => {
//injecting token into options
return super.post(url, body, options);
});
}
此外,我尝试创建一个新的Observable,如下所示,但仍然没有机会
post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {
return new Observable<Response>(observer => {
this.tokenService.getToken().subscribe(token => {
//injecting token into options
//observer.complete??? super.post(url, body, options);
});
});
}
答案 0 :(得分:4)
使用flatMap
将一个observable转换为另一个observable:
post(url: string, body: any, options?: RequestOptionsArgs): Observable<Response> {
return this.tokenService.getToken().flatMap(token => {
//injecting token into options
return super.post(url, body, options);
});
}