处理react redux应用程序中的异步错误

时间:2017-09-23 05:14:25

标签: javascript reactjs promise redux

有时候Dan发了推文

"当我看到

时,我感到畏缩
`.then(() => dispatch(...)).catch(...)` 

在React项目中。如果组件在发送期间抛出,您将进入catch。"

并说解决方案很简单。只是不要在呈现UI的 then()之后链接catch()。而是将错误处理程序作为第二个arg传递给then()。

有人可以解释为什么会这样。

在我的情况下,我正在进行一个ajax调用,所以我假设我会进入内部,因为任何200作为服务器响应,并且内部捕获任何非200的内容,即来自服务器的错误。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:3)

所以Dan的意思是,在Async请求中,您希望成功调用会导致调用.then(),因为您dispatching an action .then()反过来会更新redux存储,从而更新UI,所以如果UI更新过程中有任何错误,也会调用.catch(),而你只能在服务器返回错误时调用它

解决方案是像

一样处理它
.then(
function (){
    //handle success
    dispatch({...})
},
function () {
    //handle reject() and Error for Async request

})