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

时间:2017-01-26 17:36:44

标签: reactjs redux infinite-loop redux-thunk

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

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

如果代码放在launchd的{​​{1}}块内,则要避免无限循环。

我在调度操作中使用.catch逻辑。 makeServiceRequest does not reject on HTTP status errors

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

1 个答案:

答案 0 :(得分:0)

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

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操作,这些操作在调度时可以异步调度其他操作。模仿的一种方式是作为“传奇”。有一个名为redux-saga的Redux库可以让你对这类事物进行建模。