【问题标题】:Angular2 return Observable<Response> from wrapped Html.getAngular2 从包装的 Html.get 返回 Observable<Response>
【发布时间】:2018-04-06 18:22:01
【问题描述】:

我需要等待这个 observable 返回(简化):

assembleOptions(options?: RequestOptionsArgs): Observable<boolean> {

    let auth = this._cookieService.get(this.auth);

    if (auth === undefined || auth === null) {
        this._http.get('/someValue').map(x => {
            //do something with x
            return Observable.of(true);
        })
    } else {
        return Observable.of(true);
    }
}

这似乎返回了一个Observable&lt;true&gt;,这并不重要,因为我没有使用它,我只需要等待它,然后我尝试在其中使用它:

public get(url: string, options?: RequestOptionsArgs): Observable<Response> {
  return this.assembleOptions(options).map(x => {
      return this._http.get(url, this.options);
  });
}

this._http 来自哪里

从 '@angular/http' 导入 { Http, Response, Headers, RequestOptionsArgs };

这不起作用,它返回一个Observable&lt;Observable&lt;Response&gt;&gt;

Type 'Observable<Observable<Response>> is not assignable to type 'Observable<Response>'

我在这里缺少什么?我试过到处施法都无济于事。

【问题讨论】:

    标签: angular rxjs observable


    【解决方案1】:

    你想要switchMap 而不是map

    return this.assembleOptions(options).switchMap(x => {
          return this._http.get(url, this.options);
      });
    

    来自switchMap documentation

    映射到可观察对象,完成之前的内部可观察对象,发出值

    【讨论】:

    • 谢谢你!正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多