在uniapp中,我们使用了定时器,然后在onUnload中清除了定时器,但是发现并没有清除掉,还在执行,然后你的第一反应就是:这不是setInterval的通用病吗,然后我明确告诉你,在uniapp里面还真不是,因为setTimeout,setInterval都清除不了

1、解决方法

目前来看,有且只有下面一种方法,增加一个变量cleartime,默认为0,在离开页面时,将值置为1,最开始定义的定时器中,检查到此值为1,就将定时器关闭,很奇怪,只有在定时器里面操作,才能关闭

onShow(() => {
		timer.value = setInterval(() => {
			if (cleartime.value === 1) {
				clearInterval(timer.value)
				timer.value = null
			} else {
				// 你要处理的逻辑
			}
		}, 1000)
	})
onUnload(() => {
	cleartime.value = 1
})

Logo

前往低代码交流专区

更多推荐