onHide后定时器不运行
发布于 6 年前 作者 guoxiulan 10294 次浏览 来自 问答

@林超 @黄思程 @LastLeaf @官方 小程序在切换到后台(即点击右上角或者左滑等操作退出小程序)后是否执行已经存在的定时器setTimeout和setInterval. 经测试,在开发工具上正常,但是在真机上,setInterval不执行,setTimeout也不执行,但是在再次onShow后立马执行,时间差与定时器的时间不一致。所以需要官方解释下,onHide后小程序的后台运行机制问题。

下面的案例:

onHide: function () {
  console.log('onHide已执行');
  let now = Date.now();
  console.log('当前时间为', now);
  setTimeout(() => {
    let _now = Date.now();
    console.log('当前时间为', _now);
    console.log('前后时间差为', (_now - now) / 1000, 's');
  }, 10000)
},

本来应该是10s后执行,但是打印出来的结果是33秒,也就是从onHide到onShow的时间

回到顶部