//========== 延迟执行 ==========// var timeoutId = setTimeout(function () { // TODO... }, 3000); // 延迟执行时间,单位:毫秒 clearTimeout(timeoutId); // 取消延迟执行(在执行前有效,执行完了再取消那肯定没意义了) //========== 定时执行(匿名函数) ==========// var intervalId = setInterval(function () { // TODO... }, 3000); // 定时执行时间,单位:毫秒 clearInterval(intervalId); // 取消定时执行 //========== 定时执行(命名函数) ==========// function func() { // TODO... } var intervalId = setInterval(func, 3000); // 定时执行时间,单位:毫秒 // 备注1:函数名后面不能跟(),否则效果就是立即执行一次函数(没有延迟效果)。 // 备注2:函数名不要用单引号或双引号围起来。 //========== 定时执行(递归优化版,建议使用) ==========// function func() { if (true) { // if()可以写取消定时执行的条件,否则会一直执行 setTimeout('func()', 3000); // 定时执行时间,单位:毫秒 } } func(); //========== 总结 ==========// // 1、setTimeout()和setInterval()都是异步的,很多开发者就以为它们是多线程所以不会发生阻塞,这是错误的认知!JavaScript是单线程的,这两 // 个函数的handler任务里如果有耗时操作就会阻塞其它任务,如果有死循环还会造成整个页面卡死,所以使用时务必注意。
Copyright © 2024 码农人生. All Rights Reserved