我有这个服务
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才能进行检查,因为如果没有,您的可观察结果将不可用...
关于javascript - Angular HTTP客户端可观察的管道图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53050019/