前端的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