16 JavaScript 定时器
在js中有两种定时器:
-
一次性定时器:setTimeout()
-
周期性循环定时器: setInterval()
两种方法根据不同的场景和业务需求择而取之,
对于这两个方法,需要注意的是如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout
1 setTimeout()
只在指定的时间后执行一次
//定时器 异步运行
function hello(){
alert("hello");
}
var t1 = window.setTimeout(hello,1000); //使用方法名字执行方法
var t2 = window.setTimeout("hello()",3000); //使用字符串执行方法
window.clearTimeout(t1); //清楚定时器
2 setInterval()
在指定时间为周期循环执行
var num = 0;
var timer = null;
function hello(){
num++;
if (num>5){
clearInterval(timer); //清楚定时器
return; //结束执行
}
console.log('num:'+num);
}
var timer = setInterval(hello,1000); //当执行时会停1秒在执行
clearInterval(timer); //清楚定时器
//实际应用:
//每次使用定时器,结束时一定要记得关闭!
let time = 60;
let remind = setInterval(function () {
$smsBtn.val(time + "秒重新发送");
time -= 1;
if (time < 0) {
clearInterval(remind); // 关闭定时器
$smsBtn.val("点击获取验证码");
$smsBtn.prop('disabled', false);
}
}, 1000);
3 应用
<input type="text" id="box"> <button onclick="start()">start</button> <button onclick="end()">end</button>
<script>
function show_start() {
var now = new Date();
var now_str = now.toLocaleString();
var ele = document.getElementById('box');
ele.value = now_str;
}
var ID;
function start() {
if (ID === undefined);{
show_start();
ID = setInterval(show_start,1000);
}
}
function end() {
clearInterval(ID);
ID = undefined;
}
</script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY