setInterval和setTimeout停止的方法

本文详细介绍了JavaScript中的定时器,包括setInterval和setTimeout两种方法。解释了如何使用这些方法执行周期性的任务或延迟执行代码,并提供了具体的示例代码。

先来了解 setInterval : 
1,HTML DOM setInterval() 方法 
定义和用法 
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。 
语法 
setInterval(code,millisec[,"lang"]) 
参数 描述 
code 必需。要调用的函数或要执行的代码串。 
millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。 
返回值 
一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。 
2,HTML DOM clearInterval()方法 
定义和用法 
clearInterval() 方法可取消由 setInterval() 设置的 timeout。 
clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。 
语法 
clearInterval(id_of_setinterval) 
参数 描述 
id_of_setinterval 由 setInterval() 返回的 ID 值。 
如何停止: 
下面这个例子将每隔 50 毫秒调用 clock() 函数。您也可以使用一个按钮来停止这个 clock:

<html> 
<body> 
<input type="text" id="clock" size="35" /> 
<script language=javascript> 
var int=self.setInterval("clock()",50) 
function clock() 
{ 
var t=new Date() 
document.getElementById("clock").value=t 
} 
</script> 
</form> 
<button onclick="int=window.clearInterval(int)"> 
Stop interval</button> 
</body> 
</html>

 


再来了解 setTimeout : 
1,HTML DOM setTimeout() 方法 
定义和用法 
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。 
语法 
setTimeout(code,millisec) 
参数 描述 
code 必需。要调用的函数后要执行的 JavaScript 代码串。 
millisec 必需。在执行代码前需等待的毫秒数。 
提示和注释 
提示:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。 
实例,这个例子,在你点击按钮 5 秒钟后会弹出一个提示框: 

<html> 
<head> 
<script type="text/javascript"> 
function timedMsg() 
{ 
var t=setTimeout("alert('5 seconds!')",5000) 
} 
</script> 
</head> 
<body> 
<form> 
<input type="button" value="Display timed alertbox!" 
onClick="timedMsg()"> 
</form> 
<p>Click on the button above. An alert box will be 
displayed after 5 seconds.</p> 
</body> 
</html>

 

 


2,HTML DOM clearTimeout() 方法 
定义和用法clearTimeout() 方法可取消由 setTimeout() 方法设置的 timeout。语法clearTimeout(id_of_settimeout) 
参数 描述 
id_of_setinterval 由 setTimeout() 返回的 ID 值。该值标识要取消的延迟执行代码块。 
实例下面的例子每秒调用一次 timedCount() 函数。您也可以使用一个按钮来终止这个定时消息: 

<html> 
<head> 
<script type="text/javascript"> 
var c=0 
var t 
function timedCount() 
{ 
document.getElementById('txt').value=c 
c=c+1 
t=setTimeout("timedCount()",1000) 
} 
function stopCount() 
{ 
clearTimeout(t) 
} 
</script> 
</head> 
<body> 
<form> 
<input type="button" value="Start count!" onClick="timedCount()"> 
<input type="text" id="txt"> 
<input type="button" value="Stop count!" onClick="stopCount()"> 
</form> 
</body> 
</html>

 

转载于:https://my.oschina.net/huqiji/blog/800480

### Vue 中 `setInterval` `setTimeout` 的区别及用法 #### 基本概念 JavaScript 提供了两种主要的定时器函数:`setTimeout` `setInterval`。前者用于一次性延迟执行某个任务,而后者则会按照指定的时间间隔重复执行某项任务。 - **`setTimeout`**: 该方法会在指定的毫秒数后调用一次给定的函数[^2]。它适用于仅需执行单次异步操作的情况。 - **`setInterval`**: 此方法每隔一定时间就会自动调用一次给定的函数。适合于需要周期性运行的任务。 #### Vue中的具体实现方式 ##### 使用 `setTimeout` 在 Vue 组件中,可以通过在其生命周期钩子(如 `mounted()`)内定义并初始化一个 `setTimeout` 调度程序来处理某些特定时刻的操作: ```javascript export default { data() { return { timer: null, }; }, mounted() { this.timer = setTimeout(() => { console.log('This will run after a delay of one second.'); }, 1000); }, beforeDestroy() { clearTimeout(this.timer); // 清除定时器以防内存泄漏 this.timer = null; } }; ``` 上述代码展示了如何设置以及清理一个简单的超时计时器[^3]。 ##### 使用 `setInterval` 对于持续性的动作,则可采用 `setInterval` 方法,在组件挂载阶段设定好循环逻辑,并同样记得在销毁前停止这些轮询过程以免造成不必要的性能消耗: ```javascript export default { data() { return { intervalId: null, counter: 0, }; }, methods: { incrementCounter() { this.counter += 1; console.log(`Current Counter Value is ${this.counter}`); } }, mounted() { this.intervalId = setInterval(this.incrementCounter, 1000); }, beforeDestroy() { clearInterval(this.intervalId); // 确保离开页面时清除interval this.intervalId = null; } }; ``` 这里通过不断更新变量counter展示了一个每秒钟增加数值的例子。 #### 主要差异对比表 | 特性 | `setTimeout` | `setInterval` | |-------------------|------------------------------------|-------------------------------------| | 执行次数 | 只执行一次 | 循环多次直到被显式终止 | | 是否需要手动控制结束 | 不需要特别关注 | 需要在适当时候主动clear | #### 注意事项 无论是哪种情况都需要注意的是,在Vue应用里创建任何全局范围内的对象或者绑定事件都应该考虑其生命周期管理问题;当组件卸载之后应该及时释放资源以防止潜在的风险比如内存泄露等问题发生^。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值