数码资讯
在setInterval和setTimeout在Javascript中使用的讨论
当谈到setInterval,我们不得不提到setTimeout。这两个函数用于在固定的时间执行函数。不同的是,setTimeout和setInterval只执行一次,可连续执行。典型用法如下: 功能do_sth(){ console.log(你好…);} setTimeout(do_sth,250
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
当谈到setInterval,我们不得不提到setTimeout。这两个函数用于在固定的时间执行函数。不同的是,setTimeout和setInterval只执行一次,可连续执行。典型用法如下:
功能do_sth(){ console.log(你好…);}
setTimeout(do_sth,2500); / / 2.5秒的do_sth功能实施后(只有一次)
setInterval(do_sth,3500); / / 3.5秒的do_sth功能实施后(每3.5秒一次,继续)
表面上看来,两者都有各自的用途,并没有问题。但如果执行setInterval函数是费时,setInterval仍将按照原计划调用该函数,而不考虑任何阻碍,所以,随着时间的推移,会有越来越多的功能等在队列执行。解决这个问题仍然是一个方式调用setTimeout递归,如:
功能do_sth(){
console.log(你好…)执行耗时的操作,即使没有问题,
这里将表演/调用setTimeout
setTimeout(do_sth,2500); / /后续执行
}
(do_sth); / /第一次执行
这种递归调用不仅可以达到循环功能的目的,而且可以防止后续任务的积累。
如果你觉得这种方式有点罗嗦,你还可以多写一点。
(函数(){())
console.log(你好…),在这里做某事
setTimeout(arguments.callee,2500);
});
以这种方式,但如果经常执行的开销非常小,setInterval一般是没有问题的,但如果任务的成本是比较大的,确保你使用setTimeout。
功能do_sth(){ console.log(你好…);}
setTimeout(do_sth,2500); / / 2.5秒的do_sth功能实施后(只有一次)
setInterval(do_sth,3500); / / 3.5秒的do_sth功能实施后(每3.5秒一次,继续)
表面上看来,两者都有各自的用途,并没有问题。但如果执行setInterval函数是费时,setInterval仍将按照原计划调用该函数,而不考虑任何阻碍,所以,随着时间的推移,会有越来越多的功能等在队列执行。解决这个问题仍然是一个方式调用setTimeout递归,如:
功能do_sth(){
console.log(你好…)执行耗时的操作,即使没有问题,
这里将表演/调用setTimeout
setTimeout(do_sth,2500); / /后续执行
}
(do_sth); / /第一次执行
这种递归调用不仅可以达到循环功能的目的,而且可以防止后续任务的积累。
如果你觉得这种方式有点罗嗦,你还可以多写一点。
(函数(){())
console.log(你好…),在这里做某事
setTimeout(arguments.callee,2500);
});
以这种方式,但如果经常执行的开销非常小,setInterval一般是没有问题的,但如果任务的成本是比较大的,确保你使用setTimeout。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。