首页 文章

React Redux Thunk fetch:根据dispatch / fetch的结果执行操作

提问于
浏览
1

使用React&Redux和Redux-Thunk,尝试制作这个伪代码:

// pseudocode
    dispatch(makeServiceRequest)
    if failed
      dispatch(makeIdentityRequest)
      if successful
        dispatch(makeServiceRequest)
      end
    end

想要避免在代码放在 makeServiceRequest.catch 块内时会发生的无限循环 .

我在调度操作中使用 fetch(url).then(...).catch(...) 逻辑 . fetch does not reject on HTTP status errors .

如何使这个伪代码发生?处理这种情况的正确模式是什么?

1 回答

  • 0

    只需要一个检查HTTP状态的 then ,如果它不是成功状态就会抛出错误,就像在链接中所说的那样:

    function checkStatus(response) {
      if (response.status >= 200 && response.status < 300) {
        return response
      } else {
        var error = new Error(response.statusText)
        error.response = response
        throw error
      }
    }
    
    fetch(url).then(checkStatus).then(...).catch(...);
    

    除此之外,我不清楚你的Redux特定问题是什么 .

    编辑:根据您的评论,我认为您正在询问如何管理Redux操作,这些操作在调度时可以异步调度其他操作 . 建模的一种方法是"saga" . 有一个名为redux-saga的Redux库,可以让你模拟这类东西 .

相关问题