前端的axios.request请求时,如果then()里面的代码报错会自动走catch逻辑
今天测试的时候整吐了,莫名其妙的总是执行catch里面的报错,导致前端接收的数据总是不对,原来是then里面的代码报错了,自动执行到了catch
代码也简单贴一下吧
//orderList为获取后端订单列表
orderList({
page: this.page.pageNum,
limit: this.page.pageSize,
status: this.orderStatus,
data: this.orderTime,
real_name: this.orderNum,
field_key: this.fieldKey,
type: this.orderType === 0 ? '' : this.orderType
}).then(async res => {
let data = res.data;
//以下代码为报错的代码,因为服务端的orderlist字段为,如果为空,则省略,所以如果列表为空,则data.orderlist属性会找不到从而导致以下代码报错
if(data.orderlist.length>0){
for (let i = 0; i < data.orderlist.length; i++) {
console.log( data.orderlist[i].paytime)
data.orderlist[i].paytime=this.formatDate( data.orderlist[i].paytime);
}
}
this.orderList = data.orderlist; //订单列表
// this.orderCards = data.stat; //订单顶部的卡信息
this.page.total = data.count;
// this.$emit('on-changeCards', data.stat);//订单顶部的卡信息
this.loading = false;
}).catch(res => {
this.loading = false;
this.$Message.error(res.msg);
})找了好久bug,一直检查是不是Promise哪里写错了,百度过后才知道原来是代码报错导致的进入到了catch报错
最后把页码的结构体里面的json备注里面的omitempty去则,如果为空也传该字段,解决问题(如果是其它语言可能不会有此问题)
本文来自投稿,不代表本人立场,如若转载,请注明出处;如有问题您可以发邮件到:itlun@qq.com