延迟执行和定时执行

//========== 延迟执行 ==========//
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