javascript – Angular 2 rxjs嵌套的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)); 
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...