评论

可靠关闭小程序轮询定时器的方法

解决小程序页面定时器转入后台时不能彻底停运的问题

小程序页面实现轮询的定时器转到别的页面时并不会停止,还在幕后运行。用下述方法可彻底清除它:

1.在App.js中设置一全局变量:

  globalData{ timerSwitch: ""}

2.在该页面:

  onShow: function(){

   App.globalData.timerSwitch="1"

  }, 

  onLoad: function(){ //其他函数也是同样写法

   var that=this

       ........//要做的事

   if(App.globalData.timerSwitch=='1')

   var timer=setTimeout(function(){

   that.onLoad();console.log('定时器在运行')

   clearTimeout(timer)

   },1000)//1000毫秒

  },

3.在相邻的页面中:

  onShow: function(){

    App.globalData.timerSwitch=""

  },

这样做,当该页面返回或转到相邻页面时,定时器timer就嘎然而止了(在console上不再出现'定时器在运行'了!)

讨论:当然某些情况下不用全局变量也行,比如用本页data:{ timerSwitch:””},然后在onHide: function(){This.data.timerSwitch=""},停用定时器。但不可靠,有时好几个页面的定时器在幕后群魔乱舞!








最后一次编辑于  2022-11-13  
点赞 0
收藏
评论
登录 后发表内容