var mark2=true;
if(mark2){
move(1);
mark2=false;
}
function move(){
$(".box").animate({
width: arrW[index],
height: arrH[index],
opacity: arrO[index],
left: arrL[index],
top: arrT[index]
},500,function(){
mark2=true;
})
}
以上代码执行move(1); mark2=false;
这两句的时候,move
函数中用了animate
动画函数,那move
的调用是属于异步的吗?也就是放到任务队列中执行吗,所以首先执行mark2=false;
这样理解对吗?
我看这个题主你可以直接在代码上写上
console.log('')
打印内容来验证你猜想的顺序的。jquery 的animate 是异步的,这个不用说吧,http://www.cnblogs.com/aaronj...
一般原理都是利用setTimeout之类的来定时延迟执行,显然animate的回调到点会放到任务队列里,所以
mark2=false
肯定先执行了调用move肯定是同步的阻塞的,
animate也是同步阻塞的
结果是
如果move不是同步的
你会先看到“运行结束”然后才是其他的东西
如果animate不是同步的
你会看到move end 在 animate start 前头。
比如
结果是