setTimeout的第二个参数

本文介绍了一个关于setTimeout函数的实用技巧,即通过将setTimeout的延迟时间设为0来实现让出CPU时间给渲染线程,从而避免JavaScript执行过程中DOM操作引起的UI阻塞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来认为setTimeout函数只是一个简单的不能再简单的函数,今天汗了一把。


今天看到百度的源码是这么写的,
(function(){
.....
try{
document.documentElement.doScroll("left")
}catch(e){
setTimeout(arguments.callee,0);//arguments.callee是闭包函数
return;
}

第二个参数被设置为零,意思就是让其他的“渲染线程”占有cpu,渲染线程和javascript引擎线程互斥,所以当dom内容全部改好以后就不会出现异常了,可以执行下面的函数了。

答案来自于http://stackoverflow.com/questions/779379/why-is-settimeoutfn-0-sometimes-useful

还有一个js单线程的讲解,意外查到的http://www.phpv.net/html/1700.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值