微信小程序如果使用了setInterval计时器,默认退回上一页或关闭页面并不会清空定时器clearinterval,这会造成手机过热、无限计时、甚至小程序挂死的情况。
小程序clearinterval无效解决
小程序clearinterval清除定时器无效,原因是定时器使用与清除方法不对导致的,我们应将定时器绑定变量,这样在关闭页面清空定时器clearinterval时,才能找到定时器ID。正确的使用方式如下:
data: { //设置定时器 loanTime: '' }, //定时器方法 timer: function() { let that = this that.data.loanTime = setInterval(function() { that.setData({ nowTime: '运行中' }) }, 1000) }, //实时定时器 onShow: function() { this.timer() }, //清除定时器 onUnload: function() { clearInterval(this.data.loanTime) },
检查微信小程序定时器无法清除的原因
我们可在onUnload方法中打印定时器方法
onUnload: function() { console.log(this.data.loanTime) },
如果打印出的是int类型ID,说明clearinterval方法找到了定时器,即能正确清除定时器,如果打印出的为空/报错或undefined,则说明定时器未找到,失败,这样就是使用方法有问题,修改为上边提供的方法即可。