js定时器

关于setTimeout与setInterval的介绍:

https://javascript.info/settimeout-setinterval

 

语法:

setTimeout(func|code, delay[, arg1, arg2...])
setInterval(func|code, delay[, arg1, arg2...])

第一个参数一般是callback函数名,第二个参数是毫秒数,后面的参数是要传给callback的参数。

注意点:

1)第一个参数是函数的reference(函数名),不要在函数名后面加括号,比如下面的写法是错的:

setTimeout(sayHi(), 1000);

2)callback函数的参数可以紧跟在delay参数后面,依次排列,也可以通过bind传递,比如:

function sayHi(phrase, who) {
  alert( phrase + ', ' + who );
}

setTimeout(sayHi, 1000, "Hello", "John"); // Hello, John

也可以这样传递:

setTimeout(sayHi.bind(null, "Hello", "John"), 1000);

setInterval用法类似。

3)setTimeout可以通过递归调用实现与setInterval相同的效果,比如:

/** instead of:
let timerId = setInterval(() => alert('tick'), 2000);
*/

let timerId = setTimeout(function tick() {
  alert('tick');
  timerId = setTimeout(tick, 2000); // (*)
}, 2000);

4) setInterval的delay是每次开始调用callback function的时间间隔,而setTimeout递归调用的delay是本次callback function执行完毕到下次开始再次调用callback function的时间间隔。

 

参考:

https://javascript.info/settimeout-setinterval

https://stackoverflow.com/questions/1190642/how-can-i-pass-a-parameter-to-a-settimeout-callback

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值