- JavaScript引擎是单线程的,强制所有的异步事件排队等待执行
setTimeout
和setInterval
在执行异步代码的时候有着根本的不同- 如果一个计时器被阻塞而不能立即执行,它将延迟执行直到下一次可能执行的时间点才被执行(比期望的时间间隔要长些)
- 如果
setInterval
回调函数的执行时间将足够长(比指定的时间间隔长),它们将连续执行并且彼此之间没有时间间隔 - animate因为内部利用的实际是
setInterval
- $(function(){
for(var i=0;i<10;i++){$("div").animate({left:‘100px‘,top:‘0px‘},1000,‘swing‘,function({
- $("div").animate({left:‘100px‘,top:‘0px‘},1000,‘swing‘);
- console.log(2)
- }));
console.log(1)
}})
- 会先打印10次 1 然后执行animate内容一次,打印10次2,最后执行剩下的9次animate
- 若有嵌套层级关系,则根据依次排队顺序读取运行
时间: 2024-10-03 05:03:54