页面定时器清除失败,会多个定时器同时执行

定时器是在mounted中开始执行的,在beforeDestroy中清除的,正常操作都没有问题,但是在快速切换页面的时候,会出现定时器清不掉的情况,好几个定时器会同时调用

那你在destoryed里清除呢,你是把定时器赋值给data里的属性吗?

        getTime() {
            let timer = setTimeout(() => {
                this.time = tools_time.getDate();
                console.log(this.time);
                this.getTime();
            }, 1000);

            this.$once("hook:beforeDestroy", () => {
                clearTimeout(timer);
            });
        },

 

定时器,就会有这个问题,无论加在哪个生命周期,本人亲历体验这个坑 ,这是js 事件驱动的bug  可以结合webworker 来处理 这样就能解决拉!

activated () {

    console.log('实例被激活时使用,用于重复激活一个实例的时候')
        //这里去清楚试试

}

用这个试试,可能和缓存有关系

vue的生命周期在执行的时候并不是同步的,这样做事为了防止你切换页面出现卡顿,你定时器的方案需要改变一下。