收藏
回答

小程序在调用微信支付出现问题

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug iOS iOS 10.1.2 苹果12 6.5.3

小程序在调用微信支付时,出现输入密码弹窗时,会阻塞页面中的setTimeout和setInterval执行,在安卓手机是必现(苹果手机时正常的),页面中的setTimeout或者setInterval 通过日志打印,说明都是可以正常执行的,但是页面时不会及时更新的,当关闭这个密码弹窗时,页面中的倒计时会突然跳动。

回答关注问题邀请回答
收藏

2 个回答

  • 老张
    老张
    2023-11-14

    判断是弹出支付窗口后,小程序为后台状态,在后台的时候,小程序会停止运行。

    2023-11-14
    有用
    回复 4
    • 城南有少年
      城南有少年
      2023-11-14
      但是苹果手机上面弹出后,页面还是正常执行的,倒计时也不影响
      2023-11-14
      回复
    • 城南有少年
      城南有少年
      2023-11-14
      我用开发者工具真机调试,发现倒计时一直都有输出
      2023-11-14
      回复
    • 老张
      老张
      2023-11-14回复城南有少年
      以实际情况为准。
      2023-11-14
      1
      回复
    • 城南有少年
      城南有少年
      2023-11-15回复老张
      这个其实就属于实际情况了,在安卓手机上都不会执行,包括我看京东也是,这是微信小程序定义的?
      2023-11-15
      回复
  • 城南有少年
    城南有少年
    2023-11-14
    countDownTime(endDate) {
    			    console.log('订单倒计时', endDate);
    			    var startTime = new Date().getTime();
    			    var endTime = moment(endDate).valueOf();
    			    var lastTime = Math.floor((endTime - startTime) / 1000) + 1;
    			    
    			    var timer = () => {
    			        lastTime--;
    			        if (lastTime >= 0) {
    			            let int_minute = Math.floor(lastTime / 60);
    			            let int_second = Math.floor(lastTime - int_minute * 60);
    			            int_minute = int_minute < 10 ? `0${int_minute}` : int_minute;
    			            int_second = int_second < 10 ? `0${int_second}` : int_second;
    			            this.countDown = `00:${int_minute}:${int_second}`,
    			            this.timeOut = false;
    			            setTimeout(timer, 1000);
    			        } else {
    			            this.countDown = '00:00:00',
    			            this.timeOut = true;
    			        }
    			        console.log('倒计时:', this.countDown);
    			    }
    			    timer(); // initial invocation
    			},
    这个console.log('倒计时:', this.countDown);打印会一直执行的
    
    2023-11-14
    有用
    回复
登录 后发表内容