简述:在应用uni-app开发微信小程序时,iOS手机在领取的时候,申请接口始终pending,安卓手机没问题,模拟器也没问题,只有iOS真机调试的时候有问题。

接口在其它页面能够失常申请,唯独在领取页面始终pending,不能失常走上面的流程。

因为安卓没事儿,所以应该不是服务器的问题,所以我就始终在找前端的问题。看到pending的上一个页面渲染的接口能失常申请,所以我先把上一个接口正文掉了,正文掉就好了。

过后感觉很奇怪,就追根溯源看看这个接口外面做了什么吧。外面有一个setInterval领取倒计时的定时器,猜想是不是定时器外面做的货色太多了,把过程跑满了,所以就卡在接口那了呢?

页面渲染的接口放开,把外面定时器的start正文试了一下,验证了我的想法,果然是定时器外面的代码的问题。

先前写的代码的确堪忧:

self.timer = setInterval(() => {var today = new Date()//以后工夫var D,H,M,S;var shenyu = this.stopTime.getTime()-today.getTime(),//倒计时毫秒数shengyuD = parseInt(shenyu/(60*60*24*1000)),//转换为天D = parseInt(shenyu)-parseInt(shengyuD*60*60*24*1000),//除去天的毫秒数shengyuH = parseInt(D/(60*60*1000)),//除去天的毫秒数转换成小时H = D-shengyuH*60*60*1000,//除去天、小时的毫秒数shengyuM = parseInt(H/(60*1000)),//除去天的毫秒数转换成分钟M = H-shengyuM*60*1000;//除去天、小时、分的毫秒数S = parseInt((shenyu-shengyuD*60*60*24*1000-shengyuH*60*60*1000-shengyuM*60*1000)/1000)//除去天、小时、分的毫秒数转化为秒if(shenyu>0){    //赋值    var timeText;    if(shengyuM < 0 && S < 0){        timeText = '00:00';    }else{        shengyuH = shengyuH<10 ? ('0'+shengyuH):shengyuH;        shengyuM = shengyuM<10 ? ('0'+shengyuM):shengyuM;        S = S<10 ? ('0'+S):S;        timeText = shengyuH+':'+shengyuM+':'+S;    }    self.timeText = timeText;}else{    clearInterval(self.timer);}}, 1000);

1秒一获取以后工夫 1秒一计算以后工夫 。。咳咳...

简化后:

var today = new Date();//以后工夫var shenyu = this.stopTime.getTime()-today.getTime();//倒计时毫秒数self.timer = setInterval(() => {    //定义变量 d,h,m,s保留倒计时的工夫    var d,h,m,s;      if(shenyu>=0){        d = Math.floor(shenyu/1000/60/60/24);        h = Math.floor(shenyu/1000/60/60%24);          m = Math.floor(shenyu/1000/60%60);          s = Math.floor(shenyu/1000%60);         console.log(d+':'+h+':'+m+':'+s);        //赋值        var timeText;        if(shenyu == 0){            timeText = '00:00';        }else{            h = h<10 ? ('0'+h):h;            m = m<10 ? ('0'+m):m;            s = s<10 ? ('0'+s):s;            timeText = h+':'+m+':'+s;        }        self.timeText = timeText;    }else{        timeText = '00:00';        clearInterval(self.timer);    }    shenyu = shenyu-1000;},1000);

(所以如果始终pending的话,能够试这看看,代码的是否能够优化来解决,具体问题具体分析)

以上是我调bug的经验,记录下来,心愿有幸能够帮到你,比心。