Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React Redux Thunk fetch:根据分派/获取的结果执行操作_Reactjs_Redux_Infinite Loop_Redux Thunk - Fatal编程技术网

Reactjs React Redux Thunk fetch:根据分派/获取的结果执行操作

Reactjs React Redux Thunk fetch:根据分派/获取的结果执行操作,reactjs,redux,infinite-loop,redux-thunk,Reactjs,Redux,Infinite Loop,Redux Thunk,使用React&Redux&Redux-Thunk,尝试生成以下伪代码: // pseudocode dispatch(makeServiceRequest) if failed dispatch(makeIdentityRequest) if successful dispatch(makeServiceRequest) end end //伪码 调度(makeServiceRequest) 如果失败 调度(makeI

使用React&Redux&Redux-Thunk,尝试生成以下伪代码:

// pseudocode dispatch(makeServiceRequest) if failed dispatch(makeIdentityRequest) if successful dispatch(makeServiceRequest) end end //伪码 调度(makeServiceRequest) 如果失败 调度(makeIdentityRequest) 如果成功 调度(makeServiceRequest) 结束 结束 希望避免将代码放在
makeServiceRequest
.catch
块中时出现无限循环

我正在调度操作中使用
fetch(url)。然后(…).catch(…)
逻辑<代码>提取


我如何实现这个伪代码?处理这种情况的正确模式是什么

只要有一个
然后
来检查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(...);
功能检查状态(响应){
如果(response.status>=200&&response.status<300){
返回响应
}否则{
var error=新错误(response.statusText)
error.response=响应
抛出错误
}
}
获取(url).然后(checkStatus).然后(…).catch(…);
除此之外,我不清楚你的Redux具体问题是什么


编辑:根据您的评论,我想您是在问如何管理Redux操作,该操作在调度时可以异步调度其他操作。一种建模的方法是“传奇”。有一个名为Redux的库,可以让您对这类事情进行建模。

只要有一个
,然后检查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(...);
功能检查状态(响应){
如果(response.status>=200&&response.status<300){
返回响应
}否则{
var error=新错误(response.statusText)
error.response=响应
抛出错误
}
}
获取(url).然后(checkStatus).然后(…).catch(…);
除此之外,我不清楚你的Redux具体问题是什么

编辑:根据您的评论,我想您是在问如何管理Redux操作,该操作在调度时可以异步调度其他操作。一种建模的方法是“传奇”。有一个名为Redux的库,可以让您对这类事情进行建模。

dispatch(makeServiceRequest)执行上述
fetch.then.catch
code。但是,如果失败,它应该
makeIdentityRequest
,然后再次尝试
makeServiceRequest
。在你的例子中,故障线会进入捕捉,对吗?如果是这样,则
makeIdentityRequest
第二个
makeServiceRequest
将需要同步,或者第二个
makeServiceRequest
将需要在
makeIdentityRequest
中捕获。同步可能意味着无限循环,对于应用程序的其余部分,捕获将是非预期的行为。我理解对了吗?谢谢。dispatch(makeServiceRequest)执行上述
提取。然后.catch
编码。但是,如果失败,它应该
makeIdentityRequest
,然后再次尝试
makeServiceRequest
。在你的例子中,故障线会进入捕捉,对吗?如果是这样,则
makeIdentityRequest
第二个
makeServiceRequest
将需要同步,或者第二个
makeServiceRequest
将需要在
makeIdentityRequest
中捕获。同步可能意味着无限循环,对于应用程序的其余部分,捕获将是非预期的行为。我理解对了吗?谢谢