Vue中setTimeout未销毁,如何避免离开当前路由时的问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计736个文字,预计阅读时间需要3分钟。
问题:当从第一个页面跳转到第二个页面后,如果停留在第二个页面,定时器还在运行。如果在两个页面之间来回跳转,且跳转时间小于定时器的间隔时间,也会出现重复创建setTimeout的情况。
问题:
从第一个页面跳转到第二个页面后,如果停留在第二个页面,定时器还在运行。如果在两个页面之间来回跳转,跳转时间小于定时器的间隔时间时,也会出现重复创建setTimeout的情况。
原因:
当我们刷新页面时,会将当前页面之前创建的setTimeout以及其他定时器都清除掉,但是仅仅是路由切换是不会清除的。
data () { return { ct: null } }, methods: { start() { this.ct= setTimeout( () => {that.countdown(end)}, 1000) } end() { clearTimeout(this.ct); //清除 } }
setInterval()计时也需要clearInterval()来清除
补充知识:小记VUE下setTimeOut和setInterval遇到的问题
相信大家对着两个函数都陌生,就是一个定时器,setTimeOut只执行一次,而setInterval会重复执行
需要注意的是:在setInterval不用的时候一定要用clearSetInterval关闭定时器。
说一下最近开发中遇到的问题,我是用vue开发的,顺便记录这个错误。
我需要轮询接口,所以使用setInterval。
本文共计736个文字,预计阅读时间需要3分钟。
问题:当从第一个页面跳转到第二个页面后,如果停留在第二个页面,定时器还在运行。如果在两个页面之间来回跳转,且跳转时间小于定时器的间隔时间,也会出现重复创建setTimeout的情况。
问题:
从第一个页面跳转到第二个页面后,如果停留在第二个页面,定时器还在运行。如果在两个页面之间来回跳转,跳转时间小于定时器的间隔时间时,也会出现重复创建setTimeout的情况。
原因:
当我们刷新页面时,会将当前页面之前创建的setTimeout以及其他定时器都清除掉,但是仅仅是路由切换是不会清除的。
data () { return { ct: null } }, methods: { start() { this.ct= setTimeout( () => {that.countdown(end)}, 1000) } end() { clearTimeout(this.ct); //清除 } }
setInterval()计时也需要clearInterval()来清除
补充知识:小记VUE下setTimeOut和setInterval遇到的问题
相信大家对着两个函数都陌生,就是一个定时器,setTimeOut只执行一次,而setInterval会重复执行
需要注意的是:在setInterval不用的时候一定要用clearSetInterval关闭定时器。
说一下最近开发中遇到的问题,我是用vue开发的,顺便记录这个错误。
我需要轮询接口,所以使用setInterval。

