繁体   English   中英

Angular HTTP客户端可观察的管道图

[英]Angular http client observable pipe map

我有这个服务

  doSomething(): Observable<any> {
    return this.http.get('http://my.api.com/something')
      .pipe(
        map((data: Response) => {
            if (data && data['success'] && data['success'] === true) {
              return true;
            } else {
              return false;
            }
          }
        )
      );  
  }  

这样可以正常工作,例如,我可以从组件中订阅该功能

    this.myService.doSomething().subscribe(
        (result) => {
            console.log(result);
        },
        (err) => {
            console.log("ERROR!!!");
        }
    );

Al,这已经可以了,但是我想重构以便删除

 if (data && data['success'] && data['success'] === true)

在我的地图上。 这样,只有当我提前进行检查时,才会执行map函数。 我的第一个想法是在管道堆栈中添加一个将从http客户端获取响应的函数,检查条件是否良好,否则抛出错误(使用throwError函数)。 但是我在努力如何(至少要弄清楚要使用的Rxjs函数)。

有人可以帮我这个忙吗?

尝试使用这个:

doSomething(): Observable<any> {

    return this.http.get('http://my.api.com/something')
      .pipe(
        mergeMap((data: Response) => {
            return of(data && data['success'] === true) 
          }
        ));  
}  

您必须先执行mergeMap才能进行检查,因为如果没有,您的可观察结果将不可用...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM