JS的两个定时器setInterval()和setTimeout()的细节问题

JS中的两个定时器

JavaScript中有两个定时器

  • setInterval( “fn()”, millisec );
    在millisec时间后第一次执行fn()代码段,之后每隔millisec时间便再执行一次fn()代码段,直到遇到clearsetInterval( fn );语句停止循环。
  • setTimeout( “fn()”,millisec );
    在millisec时间后,执行fn()代码段,并且只执行一次。之后定时器虽然没有用了,但依然存在并占用空间,建议用clearTimeout()将其清除。通常将setTimeout嵌入fn()代码段内实现循环,此时与setInterval的区别是先执行一遍代码,之后才开始计时循环执行。

setInterval()

setInterval()是否影响程序的执行顺序?

var fn1 = function(){
    console.log('你好');
}
var timer1 = setInterval("fn1()",1000);
console.log('再见');

结果是,先输出“再见”,1s后输出“你好”,之后每1s输出一次“你好”。
可见,即使setInterval在循环,下面程序也依然执行下去;若在末端加上clearInterval(timer1);,结果只输出“再见”。

setInterval()的返回值

var fn1 = function(){var a = 1;},
    fn2 = function(){var b = 2;},
    timer1 = setInterval("fn1()",1000),
    timer2 = setInterval("fn1()",1000),
    timer3 = setInterval("fn2()",1000);
console.log("timer1"+"====="+timer1);
console.log("timer2"+"====="+timer2);
console.log("timer3"+"====="+timer3);
clearInterval(timer2);
console.log("timer1"+"====="+timer1);
console.log("timer2"+"====="+timer2);
console.log("timer3"+"====="+timer3);

SI返回值
可见setInterval()返回值相当于一个Id,每次执行都会产生一个特定的Id,返回值为数字,从一开始逐次累加。可以根据这个id值用clearInterval()将其清除。

setTimeout()

setTimeout()是否影响程序的执行顺序?

var timer2
var fn2 = function(){
    console.log('你好');
    timer2 = setTimeout("fn2()",1000);
};
fn2();
console.log('再见');

结果是,先输出“你好”以及“再见”,之后每1s输出一次“你好”。
可见,即使setTimeout()在循环,下面程序也依然执行下去;若在末端加上clearTimeout(timer2),结果只输出“你好”和“再见”。

setTimeout()的返回值

var timer
var fn = function(){
    console.log("hello world!====="+timer);
    timer = setTimeout("fn()",1000);

};
fn();
setTimeout("clearTimeout(timer);console.log('end----------')",10000);

SI返回值
可见,setTimeout()返回id的同时,还返回了一个执行次数?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值