-
2022-06-09 10:41:53
在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 })
更多相关内容 -
Vue清除定时器setInterval优化方案分享
2020-10-15 02:23:01主要介绍了Vue清除定时器setInterval优化方案分享,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
vue中setInterval的清除
2021-08-18 15:22:52vue中setInterval的清除 注:本文借鉴了很多方法整理得来 方法一: 直接使用 window.setInterval() 和 window.clearInterval() 方法二: 在data 中创建一个定时器对象,并在想使用定时器的方法中实例化这个对象进行...vue中setInterval的清除
注:本文借鉴了很多方法整理得来
方法一:
直接使用
window.setInterval()
和window.clearInterval()
方法二:
在data 中创建一个定时器对象,并在想使用定时器的方法中实例化这个对象进行定时器的使用:
data() { return { timerInterval: null // 定时器名称 } }, mouted() { this.timerInterval= (() => { // 某些操作 }, 1000) }, beforeDestroy() { clearInterval(this.timerInterval); this.timer = null; }
注: 有两个潜在的问题:
1)它需要在这个组件实例中保存这个 timer,如果可以的话最好只有生命周期钩子可以访问到它。这并不算严重的问题,但是它可以被视为杂物。
2)我们的建立代码独立于我们的清理代码,这使得我们比较难于程序化地清理我们建立的所有东西。方法三:(官方推荐)
通过
$once
时间侦听器在定义完定时器之后的位置来清除定时器:mounted() { const timer = setInterval(() =>{ // 某些定时器操作 }, 500); // 通过$once来监听定时器,在beforeDestroy钩子可以被清除。 this.$once('hook:beforeDestroy', () => { clearInterval(timer); }) }
-
react 函数式组件 setInterval清除不掉 clearInterval失效
2022-03-31 08:30:26追查过程 ...一般清除不掉setInterval的情况是因为每次在清除之前重新走了一遍改组件的js代码,使timer又成了初始值null,再去clearInterval(timer);肯定不会成功了。 解决办法: 再组件外声明 tim追查过程
在组件内声明 { timer = null; timer = setInterval(()=>{},seconds); } 的情景; 1.可以在 clearInterval(timer) 先console一下timer的值,看看是什么 2.一般清除不掉setInterval的情况是因为每次在清除之前重新走了一遍改组件的js代码,使timer又成了初始值null,再去clearInterval(timer);肯定不会成功了。 解决办法: 再组件外声明 timer = null;(即在 export default ()={}外) 再通俗一点 const timer = null; export default () => {}
-
关于vue中使用setInterval清除不掉的问题
2019-12-31 08:46:18 -
怎么清除setInterval
2018-12-18 15:26:54我们在变量中设置一个全局变量,然后让begin=sertInterval,清除的时候直接清除我们的全局变量即可,这个小demo原本是为了执行如果flag=true刷新那么五秒刷新一次异步提交,这里为了方便改为我们学任何语言的第一步... -
setInterval在指定条件下清除自身
2019-12-17 11:00:27this.countDown = 10 let intval = setInterval(() => { if(this.countDown === 0) { clearInterval(intval) return } this.countDown -- }, 1000) -
清除所有setInterval
2021-03-26 16:54:24//清除所有setInterval for (var i = 1; i < 100; i++){ window.clearInterval(i); } -
js代码-settimeout 模拟实现 setinterval(带清除定时器的版本)
2021-07-14 21:07:39js代码-settimeout 模拟实现 setinterval(带清除定时器的版本) -
js清除setInterval、setTimeout
2021-08-16 15:11:17var id=window.setInterval(function(){ doSomething; },1000); window.clearInterval(id); -
js定时器setTimeout和setInterval用法及区别,清除定时器的使用
2021-09-29 15:03:16setTimeout和setInterval使用方法 定时器两个参数,第一个是执行代码,第二个是执行时间。执行时间自己随便设置,执行代码有以下几种方式传入: 1.匿名函数形式传入 setTimeout(function() { console.log('time1')... -
首页使用定时器setTimeout(setInterval)展示实时时间以及清除定时器问题
2021-12-02 09:22:431、需求:在首页展示实时时间点儿,离开首页清除定时器,刚开始的做法: 父组件: home.vue <page-head ref="pageHead" /> activated() { this.$nextTick(() => { this.$refs.pageHead.startTime(); }) ... -
settimeout 模拟实现 setinterval(带清除定时器的版本)
2021-06-03 15:23:31setinterval 用来实现循环定时调用 可能会存在一定的问题 能用 settimeout 解决吗 实现代码如下: function mySettimeout(fn, t) { let timer = null; function interval() { fn(); timer = setTimeout... -
Vue组件中清除定时器setInterval的方案
2019-07-13 14:25:37Vue组件中清除定时器setInterval的方案前言在网页中,经常会使用定时器来进行时间或者数据的刷新操作。单在vue组件中使用需要注意两点:具体方案常用方案优化方案通过一个程序化的侦听器解决上述两个问题 前言 在... -
vue清除setInterval
2022-02-05 15:16:05vue清除setInterval -
Jquery中使用setInterval和setTimeout的方法
2020-12-10 22:58:01setInterval(“show()”,3000);});方法2. 指定定时执行的函数时不要使用引号和括号。 代码如下:$(function(){function show(){ alert(“ready”);}setInterval(show,3000);// 注意函数名没有引号和括弧! /... -
设置定时器和清楚定时器setInterval
2021-12-27 08:54:02this.reGetData = setInterval(() => { this.fetchData(); }, 60000); 清除定时器: 在vue的beforeDestroy钩子函数里: beforeDestroy: function() { if (this.reGetData) { //如果存在定时器就清除 ... -
JS中setinterval定时器多次调用越走越快无法清除的问题
2021-11-14 22:21:03在图片轮播中点击下一张图片按钮,setinterval定时器多次初始化,导致清除失效 在使用定时器做图片轮播时,连续两次点击下一张图形会越走越快,清除定时器失效 <div class="out"> <div id="container... -
setTimeout和setInterval的区别和清除
2019-09-06 14:15:43setTimeout只执行一次 setInterval在指定的延时间隔重复执行 清除: var ctime = setTimeout(“xxxxx”,30000); clearTimeout(ctime); var begin = setInterval(“xxxxx”,30000); clearInterval(begin); ... -
setInterval 多次点击后清除失败
2020-11-12 11:21:13多个定时器一起跑就会有这个问题 ,打开之前先关闭一个 应用场景, 点击打开dom抖动,点击关闭dom抖动 点击抖动 关闭抖动 重点在点击时先清除timer定时器 -
清除所有前端js setInterval
2021-12-24 15:51:40清除所有前端js setInterval for (var i = 1; i < 100; i++){ window.clearInterval(i); } -
微信小程序 设置计时器(setInterval)、清除计时器(clearInterval)
2021-09-16 20:41:11' bindtap='startSetInter'>开始button> 结束button> view> 2、js代码 将计时器赋值给 data 中的变量,这样在任何方法中都可以清除计时器 Page({ data: { //存储计时器 setInter:'', num:1, }, onLoad: function () ... -
Javascript中setTimeOut和setInterval的定时器用法
2021-01-19 18:01:58setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则是在每隔指定的毫秒数循环调用函数或表达式,直到clearInterval把它清除。也就是说setTimeout()只执行一次,setInterval()可以执行多... -
定时器(setTimeout()和setInterval())的清除问题
2021-05-11 19:08:13方法一: 在每次重新设置定时器之前清除掉 方法二: 在销毁的钩子函数里销毁,防止污染 都是clearInterval(定时器...settimeout与setinterval清除时使用方式一致,即clearsetTimeout()、clearInterval() ... -
设置setInterval和清除setInterval
2014-06-30 21:42:29项目中需要定时不断刷新jqgrid,只好用到了setInterval,不过还要用户 -
setInterval 倒计时 清除倒计时 clearInterval
2020-07-30 19:41:25倒计时清除 setInterval 倒计时5s后跳转页面, clearInterval(this.handler); 清除倒计时 不执行倒计时里面的跳转, 点击事件强制跳转到其他页面 并且清除 倒计时任务 // 倒计时 cutDown() { this.... -
js 如何清除setinterval
2016-10-17 18:07:00var id=window.setInterval(function(){ },1000);window.clearInterval(id);
收藏数
35,745
精华内容
14,298