收藏
回答

小程序基础库2.32.1 连续执行setTimeout存在较大误差

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug setTimeout 微信安卓客户端 8.0.37 2.32.1

小程序最近没有发布,但是从上周五开始陆陆续续有用户反馈有问题,经过统计发现,都是安卓用户,各品牌型号都有,而且是使用的微信8.0.37。

经过测试,安卓手机,微信版本8.0.34正常,但是升级到8.0.37后就存在问题。

后进一步发现是小程序基础库2.32.1的问题 ,连续执行setTimeout存在较大误差导致的,该版本在微信开发者工具的模拟器以及真机调试都正常,但是在手机上运行可以看出明显误差。

例如运行以下代码,每隔15毫秒执行定时器,小程序基础库2.32.0和2.32.1有较大的误差

function sleep(ms = 0, txt) {
  return new Promise((resolve) => {
    let t = Date.now();
    setTimeout(
      function () {
        resolve();
        console.log(txt, Date.now() - t);
      },
      ms
    );
  });
}

for (let i = 0; i < 100; i++) {
    await sleep(15, `定时器 第${i}次`);
}


最后一次编辑于  2023-06-07
回答关注问题邀请回答
收藏

4 个回答

  • 微信小店技术专员-binnie
    微信小店技术专员-binnie
    2023-06-07

    不要在 promise 里面写呢

    2023-06-07
    有用 1
    回复 2
    • 让瑕疵沉淀
      让瑕疵沉淀
      2023-06-07
      这个不兼容嘛,那我们需要调整的地方比较多哈
      2023-06-07
      回复
    • 微信小店技术专员-binnie
      微信小店技术专员-binnie
      2023-06-09回复让瑕疵沉淀
      这个在安卓下这样写暂时不兼容,后面的安卓客户端版本会修复,所以建议先不要这么写
      2023-06-09
      回复
  • 社区技术运营专员-Jahozheng
    社区技术运营专员-Jahozheng
    2023-06-07

    你好,麻烦复现一次,并且在手机微信上传日志。


    手机微信日志上传步骤: 我->设置->帮助与反馈右上角有个上报日志的入口,选择复现日期进行上传


    上传完成麻烦提供一下 【微信号】【时间点】方便协助排查。

    2023-06-07
    有用
    回复
  • Roryliu
    Roryliu
    2023-09-07

    同样遇到这个问题,目前我这边解决方案是判断安卓端情况时进行参数纠偏

    2023-09-07
    有用
    回复
  • 神经蛙
    神经蛙
    2023-07-19

    同样的程序在IOS就正常,在安卓上就呈现的不一样。

    2023-07-19
    有用
    回复 1
    • 神经蛙
      神经蛙
      2023-07-19
      也是setTimeout问题,一样的8.0.37,之前都是可以的
      2023-07-19
      回复
登录 后发表内容