微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redux可观察的重试不会重新发送API调用

如何解决Redux可观察的重试不会重新发送API调用

我正在使用redux-observable,并且每当API调用引发错误时,便要尝试3次。

但是它不会重试,它只发送了一个http请求。

我编写了一个调用github用户api的示例来查找用户,如果您提供了This doesn't exist这样的不存在的用户名,则它将引发404错误。我添加retry(3),但不会重试。

您可以在codesandbox

上找到代码
export const fetchUserEpic = action$ => action$.pipe(
  ofType(FETCH_USER),mergeMap(action =>
    ajax.getJSON(`https://api.github.com/users/${action.payload}`).pipe(
      map(response => fetchUserFulfilled(response))
    )
  ),retry(3)
);

解决方法

将重试移至内部可观察的位置,如下所示:

export const fetchUserEpic = action$ => action$.pipe(
  ofType(FETCH_USER),mergeMap(action =>
    ajax.getJSON(`https://api.github.com/users/${action.payload}`).pipe(
      map(response => fetchUserFulfilled(response)),retry(3)
    )
  )
);

您的action$实际上并没有失败,这是您要重试的ajax调用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。