使用Redux-Observable + RxJS + Axios当调用超时时返回的错误不包括任何状态码,等等。整个错误响应是[TimeoutError: Timeout has occurred]。如何通过响应捕获错误以显示通知?关于这一点的史诗如下:
const fetchUserEpic = (action$, state$) =>
action$.pipe(
ofType('FETCH_USER'),
mergeMap(() =>
from(axios.get(`/user/`)).pipe(
timeout(5000),
map(response => ({
type: 'FETCH_USER_SUCCESS',
data: response.data
})),
catchError(error =>
of({
type: 'FETCH_USER_ERROR',
error
})
)
)
)
);发布于 2019-11-28 19:49:50
传递到catchError处理程序的error对象有两个字符串属性:message和name。
整个对象基本上看起来像这样:
{
message: 'Timeout has occurred',
name: 'TimeoutError'
}有关参考,请参阅TimeoutError.ts implementation。
因此,要清楚地处理rxjs超时,您可以检查:
.catchError(error => {
if (error.name === 'TimeoutError') {
// handle rxjs timeout
}
...
})(至少这是我为一个与您非常相似的用例所做的。)
https://stackoverflow.com/questions/53013020
复制相似问题