我正在使用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?
}
}),
就这么简单吗?那是我应该如何检查状态是否为错误,状态是否正常?
答案 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
}
})