首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Redux-Observable + RxJS + Axios设置捕获超时错误?

如何使用Redux-Observable + RxJS + Axios设置捕获超时错误?
EN

Stack Overflow用户
提问于 2018-10-27 00:37:25
回答 1查看 419关注 0票数 0

使用Redux-Observable + RxJS + Axios当调用超时时返回的错误不包括任何状态码,等等。整个错误响应是[TimeoutError: Timeout has occurred]。如何通过响应捕获错误以显示通知?关于这一点的史诗如下:

代码语言:javascript
复制
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
          })
        )
      )
    )
  );
EN

回答 1

Stack Overflow用户

发布于 2019-11-28 19:49:50

传递到catchError处理程序的error对象有两个字符串属性:messagename

整个对象基本上看起来像这样:

代码语言:javascript
复制
{
    message: 'Timeout has occurred',
    name: 'TimeoutError'
}

有关参考,请参阅TimeoutError.ts implementation

因此,要清楚地处理rxjs超时,您可以检查:

代码语言:javascript
复制
.catchError(error => {
    if (error.name === 'TimeoutError') {
        // handle rxjs timeout
    }
    ...
})

(至少这是我为一个与您非常相似的用例所做的。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53013020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档