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 前頭。
例如
結果是