在我的项目中,我使用RxJS
处理HTTP请求。我对错误处理部分感到困惑,如下所示:
.switchMap((evt: any) => {
return http.getComments(evt.params)
.map(data => ({ loading: false, data }))
.catch(() => {
console.log('debugging here');
return Observable.empty();
});
})
在上面的代码中,在
switchMap
运算符内部,我使用http.getComments
函数发送请求,该函数由我自己定义如下: getComments(params) {
return Observable.fromPromise(
this.io.get(path, { params })
);
}
在此函数中,我使用
fromPromise
运算符将返回的Promise转换为可观察的。问题是当HTTP请求失败时,
catch
中的switchMap
运算符无法工作,调试控制台无法输出。所以我的代码出了什么问题。
最佳答案
您是否真的需要在switchMap
中捕获错误?您可以根据需要在源中处理错误。
.switchMap((evt: any) =>
http.getComments(evt.params).map(data => ({ loading: false, data }))
})
.subscribe(console.log, console.error);
无论如何,您的源代码看起来没有任何错误,也许您的 promise 不会在http失败时被拒绝,而只是通过错误作为响应来解决(这是猜测,因为我之前已经看到过)
关于error-handling - RxJS HTTP请求错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49428191/