AXIOS Async / Await如何最好地编写代码?

时间:2018-06-19 21:55:52

标签: reactjs async-await axios mobx-state-tree

我正在使用Axios,Mobx / Mobx状态树(MST)和Reactjs编写我的第一个Ajax调用。

在MST中,它们有一种称为流的东西,基本上与async / await的作用相同

 getCustomers: flow(function * (){
       const response = yield getEnv(self).axiosInstance.get("/Customers/Get");

       if(response.status === 200){
           // response.data
        } else {
             // error though not sure what the call is? response.error?
        }
}),

就这么简单吗?那是我应该如何检查状态是否为错误,状态是否正常?

1 个答案:

答案 0 :(得分:1)

使用mobx流,将来的诺言将与async/await语法一样处理,结果将返回成功的解决方案,而失败的将导致引发错误,等待被捕获声明。您应该使用try / catch来捕获错误。有关此主题的更多信息,请参见:https://github.com/mobxjs/mobx-state-tree#asynchronous-actions

使用您发布的示例代码,它还取决于端点处理错误的方式以及返回的状态代码。基本上,axios将200响应视为成功,将其他(400、500)视为失败。如果您的API遵循此约定,则无需检查response.status来查看响应是否成功,而是依靠axios来为您完成响应,示例如下:

getCustomers: flow(function * (){
       try {
          const response = yield getEnv(self).axiosInstance.get("/Customers/Get");
          // Do something here if 200 response returned
       } catch (err) {
          // Error handling here when 500 returned
       }
})