收藏
回答

setTimeout不准

问题模块 框架类型 操作系统 操作系统版本 手机型号 微信版本
客户端 小程序 iOS 10 8 6.6.1


ios上setTimeout完全不准,例如我设置一个定时器setTimeout  1500,安卓可能1500~1502毫秒就执行了,ios可能1502~2000毫秒才执行,不一定延时多久,setInterval也一样不准


我现在做的是运动视频方面的小程序,视频和音频是分开的,一个视频动作可能1500毫秒,循环播,然后每1500毫秒数一个数1、2、3、4这种记次数,但是定时器不准,导致后面误差越来越大,可能动作已经做了一半了才开始数数,匹配不了。

安卓完全没问题

希望官方关注一下

最后一次编辑于  2018-02-05  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

7 个回答

  • HS
    HS
    2018-02-05

    在 JavaScript 上 setTimeout 本身是有一定误差的。如果被延时的时间很长,请减少这段时间内的计算量,例如大量的同步的循环。

    2018-02-05
    赞同
    回复
  • 搬砖的码农
    搬砖的码农
    2018-02-05

    但是同样的代码,在安卓上就没延迟这么大啊,安卓基本在1~2毫秒内

    2018-02-05
    赞同
    回复
  • 搬砖的码农
    搬砖的码农
    2018-02-05

    而且我代码没有太多计算,就是在视频播放的同时,单纯的设一个定时器,然后等到时间播下一个音频

    2018-02-05
    赞同
    回复
  • HS
    HS
    2018-02-05

    可能和性能以及在这段时间内执行代码的耗时有关。可以写一个简单的 demo 倒计时 1500 毫秒,看看两者差距呢。

    2018-02-05
    赞同
    回复
  • 搬砖的码农
    搬砖的码农
    2018-02-05




    都是设置了1500毫秒,IOS的明显比安卓的误差大很多

    2018-02-05
    赞同
    回复
  • 搬砖的码农
    搬砖的码农
    2018-02-05

    官方,

    或者你把这个bug解决了,我就不需要用定时器了。。。

    关于ios vedio循环播放时,不触发bindended 

    https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=1160406771&docid=0006ea0de48ba03a933627afc5ec00


    2018-02-05
    赞同
    回复
  • Toy
    Toy
    2018-02-08

    建议去看看js中定时器的实现机制

    2018-02-08
    赞同
    回复