1. 首页

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