小程序页面实现轮询的定时器转到别的页面时并不会停止,还在幕后运行。用下述方法可彻底清除它:
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=""},停用定时器。但不可靠,有时好几个页面的定时器在幕后群魔乱舞!