Js同步异步机制
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 若有嵌套层级关系,则根据依次排队顺序读取运行 来源: https://www.cnblogs.com/lwboke/p/6938008.html