【问题标题】:How to retry fetching after refresh token using redux-observable?如何在使用 redux-observable 刷新令牌后重试获取?
【发布时间】:2020-06-02 14:48:46
【问题描述】:

我是 RxJS 的新手,如果它以未经授权的错误响应,我需要重新尝试将项目获取到 api。我需要调用刷新令牌端点,然后重试获取。如何使用来自 redux-observable 的史诗来做到这一点?我想它应该看起来像这段代码,但我不确定在 catchError 块中做什么。

export const getItemsEpic = (action$) =>
action$.pipe(
    ofType('FETCH_ITEMS'),
    switchMap(() => getItemsRequest()),
    map((response) => addItemsAction(response.data)),
    catchError(err => {
        ???
    }),
);

【问题讨论】:

    标签: javascript reactjs rxjs observable redux-observable


    【解决方案1】:

    你可以尝试添加这样的管道

    export const getItemsEpic = (action$) =>
    action$.pipe(
      ofType('FETCH_ITEMS'),
      switchMap(() => getItemsRequest()),
      map((response) => addItemsAction(response.data)),
      catchError(error => {
        // some logic how to refresh to token.
        return ajax('refreshtoken').pipe(switchMapTo(throwError(error)));
      ),
      retry(1), // allows only 1 failure.
    );
    

    【讨论】:

    • 哦,谢谢!但是我使用 React,可以这样做吗?我使用 axios 来处理请求。
    • 啊,我明白了,我的错,对不起,理论上你可以将相同的管道添加到失败的请求中。
    • 谢谢!我会试试的
    • 不幸的是它不起作用。令牌更新后不重新获取
    猜你喜欢
    • 2019-10-02
    • 2016-08-25
    • 2020-02-26
    • 2021-02-16
    • 2016-02-25
    • 2020-09-25
    • 2019-10-26
    • 2021-01-29
    相关资源
    最近更新 更多