首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用clearInterval清除并使用setInterval重置时,setInterval不会重新启动

的原因是因为在调用clearInterval函数时,会清除之前通过setInterval函数创建的定时器。而在重新调用setInterval函数时,新的定时器会被创建,但不会立即启动。需要等待设定的时间间隔过去后,新的定时器才会开始执行。

setInterval函数是JavaScript中的一个定时器函数,用于按照指定的时间间隔重复执行指定的代码或函数。它接受两个参数,第一个参数是要执行的代码或函数,第二个参数是时间间隔,以毫秒为单位。

当我们使用clearInterval函数来清除之前创建的定时器时,定时器就会停止执行。如果想要重新启动定时器,需要再次调用setInterval函数来创建一个新的定时器。

以下是一个示例代码:

代码语言:txt
复制
// 创建定时器
var timer = setInterval(function() {
  console.log("定时器执行");
}, 1000);

// 清除定时器
clearInterval(timer);

// 重新启动定时器
timer = setInterval(function() {
  console.log("重新启动定时器");
}, 1000);

在上述代码中,首先通过setInterval函数创建了一个定时器,并每隔1秒输出一次"定时器执行"。然后使用clearInterval函数清除了该定时器。最后再次调用setInterval函数创建一个新的定时器,并每隔1秒输出一次"重新启动定时器"。

需要注意的是,如果在调用clearInterval函数之前没有先创建定时器,或者在调用setInterval函数之前没有先清除定时器,可能会导致定时器的重复创建或无法清除的问题。因此,在使用setInterval和clearInterval函数时,需要确保它们的调用顺序和逻辑正确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

早读《Making setInterval Declarative with React Hooks》

https://overreacted.io/making-setinterval-declarative-with-react-hooks/ 这是Dan的一篇文章,详细阐述了如何在Hooks中使用setInterval...我们在 effects 中直接使用定时器会重复启动然后清除,effects 在每次渲染都会被调用,因此我们需要一个传递一个空数组来保证它只会被调用一次,此时获取 count 新值就会很困难。...使用 useRef 来保存新的 interval 触发回调: const savedCallback = useRef(); // 每次渲染后保存新的callback到ref中 useEffect(...() => { savedCallback.current = callback; }); // 只执行一次,不会重置,在渲染后读取回调并在 interval tick 中执行它 useEffect...== null) { let id = setInterval(tick, delay); return () => clearInterval(id); } }, [delay])

64040

setInterval 和 hooks 撞在一起,翻车了~

接下来我们手动实现一个计时器例子来说明下,hooks 里使用 setIntervalclearInterval 失效的根本原因。...实际上上面的代码是有问题的,React 默认会在每次渲染,都重新执行 useEffect。而调用了 clearInterval 后重新 setInterval 的时候,计时会被重置。...由于一直没有重新执行 effect,所以 setInterval 在闭包中使用的 count 始终是从第一次渲染来的,所以就有了 count + 1 始终是 1 的现象。是不是恍然大悟!...return {count}; } 一方面传入了[],我们的 effect 不会重新执行,所以计时器不会重置。...(tick, 1000); return () => clearInterval(id); }, []); } 这里延时值是写死的,我们需要参数化,考虑到,如果 delay 变更了,我们也是要重新启动计时器的

1.3K20

通过 React Hooks 声明式地使用 setInterval

通常来说,这是一个好特性,因为大部分的订阅 API 都允许移除旧的订阅添加一个新的订阅来替换。但是,这不包括 setInterval。...调用了 clearInterval 后重新 setInterval 的时候,计时会被重置。如果我们频繁重新渲染,导致 effects 频繁执行,计时器可能根本没有机会被触发!...由于一直没有重新执行 effect,所以 setInterval 在闭包中使用的 count 始终是从第一次渲染来的,所以就有了 count + 1 始终是 1 的现象。呵呵哒!...相对应的,setInterval 却没有描述到整个过程 - 一旦你设置了计时器,它就无法改变了,只能清除它。 这就是 React 模型和 setInterval API 之间的“阻抗不匹配”。...(tick, 1000); return () => clearInterval(id); }, []); 由于传入了 [],我们的 effect 不会重新执行,所以计时器不会重置

7.5K220

jquery清除定时任务

jQuery清除定时任务在使用jQuery编写前端代码,我们经常会用到定时任务来周期性地执行特定的操作,比如定时刷新数据、定时轮播图片等。...清除定时任务要清除之前设置的定时任务,可以使用clearInterval函数,传入之前设置的定时任务ID。...;}在上面的示例中,我们根据特定条件(condition)来判断是否清除定时任务,如果条件满足,则调用clearInterval传入之前设置的定时任务ID,从而清除定时任务。...异步执行:setInterval是异步调用的,即它会定时触发函数,不会阻塞后续代码的执行。...取消定时任务:可以使用clearInterval函数来取消通过setInterval设置的定时任务,需要传入setInterval返回的任务ID。

12910

🥬 🐶的uniapp学习之🦌 【计时器】

() 计时需要使用setInterval()方法,setInterval()有两个参数, 第一个参数是要执行的函数 第二个参数是多久执行一次,单位是毫秒。...clearInterval() 停止计时器需要clearInterval()方法,将我们定义的setInterval()函数对应变量传给它,来停止计时。...开始暂停继续结束 计时器 定义好三个变量 分:minute 秒:mill 毫秒:millisecond 开始 执行setInterval(),赋值给init变量。...暂停 执行clearInterval(),将刚才的init对应的计时器清除掉。但是对应的分 秒 毫秒 值还在。 继续 执行setInterval(),还要给它赋值给init。...this.pendingBtn // 清除掉计时器 clearInterval(this.init) // 继续创建新的计时器 this.pendingBtn

1.5K20

【JavaScript基础】Js的定时器(你想看的原理也在哟)

为了确保两次执行之间有固定的间隔,可以不用setInterval,而是每次执行结束后,使用setTimeout指定下一次执行的具体时间。...,需要有一个好的习惯,那就是清除定时器,特别是对于重复型定时器,一定要及时清除。...定时器清除的方法 相对于两种创建定时器的方法,Js也给出了相对应的清除方法,分别是clearTimeout(obj)和clearInterval(obj)。...异步任务在JavaScript中是通过回调函数实现异步的,回到本文的主题,一旦使用了setTimeout(),里面的回调函数就是异步代码,但是这里面的代码不会立马执行,而是要等待主队列为空,达到定的延时时间才会执行...运行机制 setTimeout和setInterval的运行机制是,将指定的代码移出本次执行,等到下一轮Event Loop,再检查是否到了指定时间。

81030

JavaScript定时调用函数(SetInterval与setTimeout)

);//设置一个超时对象,周期='交互时间' 停止定时:           window.clearTimeout(对象) 清除已设置的setTimeout对象             window.clearInterval...(对象) 清除已设置的setInterval对象 PerRefresh(); function PerRefresh() { var today = new Date(); alert...如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout...setInterval 不断地执行指定代码直到调用clearInterval清除定时器对象 setTimeout 执行一次指定代码,使用clearTimeout清除定时器对象 setInterval和setTimeout...都返回定时器对象标识符,用于clearInterval和clearTimeout调用

1.5K40

requestAnimationFrame实现单张图片无缝持续滚动

背景 在很久以前,有写过一个使用 js 实现单张图片持续滚动图片的 代码,但那一版实现会持续操作DOM,向DOM中插入元素,性能较差,最近发现 requestAnimationFrame 通过 动画的方式实现图片滚动更加方便...【相关知识点与优势可参考这里】 发现的坑 1、非严格模式下,function中定义的变量 ,如果没写 let  或 const  或 var ,会导致 该方法之后都不会执行,也没有报错 "use strict...; // 初始化图片移动置为0的边界长度 let boundaryValue = 0; // 是否可以执行滚动动画,保证获取到图片真实宽高之后再开始滚动,否则获取不到宽高,始终不会滚动...表示已经服务器已经返回宽高 if (imgElem.width > 0 || imgElem.height > 0) { console.log("获取到真实宽高,清除定时器...if(imgElem){ var set = setInterval(checkImg, 40); // 轮询 10 秒,还拿不到就不清除定时器

3.5K20
领券