setTimeout是JavaScript的一个函数,它可以用来在一定延迟后执行一个函数。
语法如下:
setTimeout(function, delay, arg1, arg2, ...)
其中,
在JavaScript中,JS执行过程是单线程的,也就是说一次只能执行一件事情。如果有一个非常耗时的操作,会阻塞其他的代码执行。如果要执行非常耗时的操作,就需要把它放到另一个线程执行。setTimeout就是一个异步操作,它可以把回调函数放到消息队列中,等到CPU空闲的时候再执行。
当setTimeout的延迟时间为0时,实际上并不是立即执行回调函数,而是把回调函数放到消息队列中。因此,当当前代码执行完成后,就会立即执行回调函数,这样就可以把回调函数的执行放到下一个消息队列中,避免了阻塞其他代码的执行。
console.log("start");
setTimeout(function() {
console.log("setTimeout");
}, 0);
console.log("end");
输出结果是:
start
end
setTimeout
代码的执行过程如下:
console.log("start");
setTimeout(function() {
console.log("setTimeout1");
setTimeout(function() {
console.log("setTimeout2");
}, 0);
}, 0);
console.log("end");
输出结果是:
start
end
setTimeout1
setTimeout2
代码的执行过程如下:
setTimeout时间设置为0可以使回调函数尽可能地早地执行,避免阻塞其他代码的执行。但是过度使用setTimeout也会影响代码的执行效率,应该根据实际情况来选择合适的延迟时间。
本文链接:http://task.lmcjl.com/news/10129.html