z***@qq.com
z***@qq.com
  • 发布:2019-10-23 16:10
  • 更新:2021-04-07 20:55
  • 阅读:2832

【报Bug】beforeDestroy清除计时器失效

分类:uni-app

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

1、在data中新建计时器变量
data() {
return {
timer:null
}
}
2、created()生命周期中新建一个计时器
created(){
this.timer=setInterval(()=>{
console.log('11')
})
}
3、在beforeDestroy清除定时器
beforeDestroy() {
clearInterval(this.timer)
},
点击其他页面,在其他页面中会输出1111
【请问beforeDestroy在uniapp中不能用来清除定时器吗?还是这个是bug】

2019-10-23 16:10 负责人:无 分享
已邀请:
5***@qq.com

5***@qq.com - 123

使用onUnload吧

  • z***@qq.com (作者)

    onUnload同样也不能执行,请问是什么原因呢

    2019-11-01 16:58

z***@qq.com

z***@qq.com (作者)

还是一样的问题

  • 阁楼庭院

    楼主弄好了么?几个月前正常的,现在我的也清除不掉,onHide,onUnload,beforeDestroy,onBackPress,onLoad这里面都清了,但是都不行,再其他页面都还在运行,你的弄好了么

    2019-11-05 18:57

  • z***@qq.com (作者)

    回复 阁楼庭院: 可以了,我是定义一个全局的timer,不能在data里定义,然后在onunload中清除定时器的

    2019-11-13 15:28

芳华

芳华 - 小菜菜

官方说组件生命周期支持beforeDestroy,onUnload是页面级,如果你们的不好用,很有可能当前组件没有被卸载

4***@qq.com

4***@qq.com

失效是因为定时器叠加了,请尝试
// 在执行定时器前必须先清除
clearInter(this.xxx)

this.xxx = setinter( () => {

})

该问题目前已经被锁定, 无法添加新回复