猿问

急求!!!!关于ajax错误处理各位有什么建议?

代码如下,其中有三个if判断,来检查数据是否符合预期,让我困惑的是,这些检查是否有必要?我是不是应该拿掉这些判断,让其catch自行捕获?哪种方式更合理些?或许还有更合理的做法?希望有人能够指点下,谢谢
asyncloadUserInfo(){
try{
const{data}=awaitgetUserInfo()
if(data.status!==CONFIG.SUCCESS_CODE){
return
}
if(!data.data.length){
return
}
constaccount=util.getAccountById(data.data)
if(!account||!account.userName||!account.userPhoneNo||!account.merchantName){
return
}
this.setState({
userName:account.userName,
userPhoneNo:account.userPhoneNo,
merchantName:account.merchantName,
})
}catch(err){
alert('用户信息数据发生错误')
}
}
去掉检查
asyncloadUserInfo(){
try{
const{data}=awaitgetUserInfo()
constaccount=util.getAccountById(data.data)
this.setState({
userName:account.userName,
userPhoneNo:account.userPhoneNo,
merchantName:account.merchantName,
})
}catch(err){
alert('用户信息数据发生错误')
}
}
慕无忌1623718
浏览 229回答 2
2回答

尚方宝剑之说

account如果不是空呢(null||undefined)?上面和下面实现的功能不一样。下面只能说account没值,然后报错。但是当userName是空串的时候,无法做出应对。UncaughtTypeError:Cannotreadproperty'userName'ofundefinedUncaughtTypeError:Cannotreadproperty'userName'ofnull

HUH函数

与@linong的看法不同我觉得只需要下面的ajax请求即可;如果account不是空,而是{},那么足以说明ajax请求是正常的,不正常的是服务器的数据这时候也不用报错,可以在使用userName,userPhoneNo,merchantName数据时加上配置姓名:{this.state.userName||'用户名为空'}//userPhoneNo,merchantName略补充this.setState({userName:account.userName||'默认值',userPhoneNo:account.userPhoneNo||'默认值',merchantName:account.merchantName||'默认值',})也可以如此吧,看使用场景
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答