EEUI / Weex 中使用定时器setInterval

717 阅读1分钟

项目首页中需要有个接口,间隔30s刷新一次数据更新状态,因此用到了定时器。一开始定时器能用,但是跳转到其他页面之后,并不能停止定时器(清除定时器的方法失效了),各种修改代码,居然成功了。别问我为啥这样写可以,我也很迷茫。

// 1、data里定义一个timer,当然你高兴叫啥都可以
data(){
    return{
        timer:null
    }
}




/***
 2、在合适的位置,加个定时器
    加之前判断下是否原来就有定时器,有则清除或者不再给个新的定时器
    这个还是有必要的,如果没有判断,会出现新老定时器都存在的情况,本身30s才执行一次的方法会变成30s内执行2次
***/ 
const _this = this
if(this.timer) clearInterval(this.timer);
this.timer = setInterval(() => {
    _this.refresh()  //这个一定要将方法写到methods中,如果直接在这里执行,定时器清除方法是停不下来的
}, 30000)





// 3、定时器内执行的方法
refresh(){
    console.log('refresh')
}




// 4、在页面被销毁、页面暂停的时候,清除定时器。
beforeDestroy() {
        if(this.timer) clearInterval(this.timer);
        this.timer = null
},
pagePause(){
        if(this.timer) clearInterval(this.timer);
        this.timer = null
},