rxjs6 - 如何处理 rxjs 帖子引发的错误
问题描述
从我的后端服务,我正在发送一条post
消息
return this.http.post(/*this.API_URL +*/this.NEW_QUESTION_URL,body,httpOptions)
.map(response => {
return result; //map isn't required
}
})
.catch(this.handleError); //error handler if Observable fails
在handleError
,我抛出一个错误
private handleError (error: HttpErrorResponse) {
console.error('WebToBackendInterfaceService::handleError', error);//I SEE THIS PRINT
let result:ServerResponseAPI = {result:"error", "additional-info":error.message};
return throwError(result);
}
我的问题 - 我想throwError
返回一个Observable
. 我如何以及在哪里订阅这个 Observable 以便我可以处理错误?
我想Observable
返回的 bypost
与 from 的不同throwError
。我已经订阅了Observable
of post
。
我也有一个自定义拦截器。
return next.handle(cloned)
.pipe(tap((ev: HttpEvent<any>) => {
console.log("got an event",ev);
if (ev.type === HttpEventType.Response) {
console.log('event of type Http response');
} else if (ev.type === HttpEventType.Sent) {
console.log(" event of type httpsent");
} else if(ev.type === HttpEventType.DownloadProgress){
console.log("event of type download progress");
} else if (ev.type === HttpEventType.UploadProgress) {
console.log("event of type upload progress");
} else if (ev.type === HttpEventType.User) {
console.log("event of type user progress");
}else if (ev.type === HttpEventType.ResponseHeader) {
console.log("event of type response header")
} else {
console.log("don't know type",ev.type);
}
})
,catchError(errorResponse => {
console.log("caught error from server",errorResponse) //I SEE THIS PRINT
return observableThrowError(errorResponse);
}));
}
解决方案
啊!我认为基本的 Rxjs 东西。在订阅 observable 时,我可以为数据、错误和完成提供处理程序。我只为数据提供了处理程序。
let subscription = this.dataService.addData(this.data)
.subscribe((data) => {
console.log("got data ", data)
},
(error) => {
console.log("got error from the Observable: ", error)
},
() => {
console.log("observable completed")
});
推荐阅读
- oracle - ORACLE avg,max,min 工资触发
- mysql - 将 json 数组解组为 struct 数组
- matlab - 我可以用 OOB 误差低的样本重新训练模型吗?
- flutter - Navigator.push 后如何关闭 AlertDialog?
- html - 如何遍历超市网站并获取产品名称和价格?
- python - 如何将 statsmodels.tsa.seasonal.seasonal_decompose 与 pandas 数据框一起使用
- flutter - Flutter, Flow inside Align 不响应对齐规则
- java - 我们可以将 Java 中的 DB ResultSet 发送到另一台服务器,以便从该单独的服务器获取行吗?
- c++ - Make尝试将目标编译为文件
- python-3.x - 在 Python 中签署 SAML 响应