Reactjs React Redux Thunk fetch:根据分派/获取的结果执行操作
使用React&Redux&Redux-Thunk,尝试生成以下伪代码: // pseudocode dispatch(makeServiceRequest) if failed dispatch(makeIdentityRequest) if successful dispatch(makeServiceRequest) end end //伪码 调度(makeServiceRequest) 如果失败 调度(makeIdentityRequest) 如果成功 调度(makeServiceRequest) 结束 结束 希望避免将代码放在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
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
中捕获。同步可能意味着无限循环,对于应用程序的其余部分,捕获将是非预期的行为。我理解对了吗?谢谢