WEB开发-JavaScript的计时(setInterval)、延时(setTimeout)和取消的学习

举报
zekelove 发表于 2021/07/22 15:46:02 2021/07/22
【摘要】 在前端的开发中经常会用到显示时间,倒计时,定时查询,定时循环检测等等的场景,满足这些场景的实现,我们就要学习 setInterval、clearInterval、setTimeout、clearTimeout这些方法的使用。

在前端的开发中经常会用到显示时间,倒计时,定时查询,定时循环检测等等的场景,满足这些场景的实现,我们就要学习 setInterval、clearInterval、setTimeout、clearTimeout这些方法的使用。

setInterval定义和用法

定义:按照指定的周期(以毫秒计算)来调用函数或计算表达式,此方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭停止。

语法:setInterval(code,milliseconds[,param1,param2,......])

code/function:必需,要调用的函数或要执行的代码串。

milliseconds: 必须,周期性执行或调用 code/function 之间的时间间隔,以毫秒计。

param1,param2...:可选, 传给执行函数的其他参数。

返回值:返回一个 ID(数字),将这个ID传递给 clearInterval() 取消执行。

// 计时器,每1秒取一次时间
var showTime = setInterval(function(){ 
	getTime() ;
}, 1000);
// 获取本地时间
function getTime() {
    var d = new Date();
    var time = d.toLocaleTimeString();
    document.body.innerHTML = time;
}

clearInterval定义和用法

定义:方法可取消由 setInterval() 函数设定的定时执行操作,参数必须是由 setInterval() 返回的 ID 值。

语法:clearInterval(id_of_setinterval)

id_of_setinterval:由 setInterval() 返回的 ID 值。

// 计数器,每隔1秒计数一次
var sum = 0
var count = setInterval(function(){ 
    sum+=1;
    console.log(sum);
    if(sum == 5) {
        // 清除计数
        clearInterval(count);
    }
}, 1000);

setTimeout定义和用法

定义:用于在指定的毫秒数后调用函数或计算表达式。

语法:setTimeout(code,milliseconds[,param1,param2,......])

code/function:必需,要调用的函数或要执行的代码串。

milliseconds: 必须,执行或调用 code/function 需要等待的时间,以毫秒计,默认为 0。

param1,param2...:可选, 传给执行函数的其他参数。

返回值:返回一个 ID(数字),将这个ID传递给 clearTimeout() 取消执行。

// 3秒后打印“Hello word”
var test = setTimeout(function(){
    console.log("Hello word");
}, 3000);

clearTimeout定义和用法

定义:可取消由 setTimeout() 方法设置的定时操作,参数必须是由 setTimeout() 返回的 ID 值。

语法:clearTimeout(id_of_settimeout)

id_of_settimeout:由 setTimeout() 返回的 ID 值。

var test = setTimeout(function(){
    console.log("Hello word");
}, 3000);
// 如果定时器循环执行,停止要清空定时器
clearTimeout(test);

总结

在项目中以上几个方法还是很重要的,经常会使用,尤其是在使用到异步交互的时候非常有帮助。如果使用错误会有意想不到的结果,所以要正确理解并使用。

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。