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;
})
}
Le code ci-dessus est exécutémove(1); mark2=false;
这两句的时候,move
函数中用了animate
动画函数,那move
的调用是属于异步的吗?也就是放到任务队列中执行吗,所以首先执行mark2=false;
Est-ce correct à comprendre ?
Je pense que pour cette question vous pouvez écrire
console.log('')
directement sur le code et imprimer le contenu pour vérifier l'ordre que vous avez deviné.L'animation de jquery est asynchrone, il va sans dire, http://www.cnblogs.com/aaronj...
Le principe général est d'utiliser setTimeout et autres pour retarder régulièrement l'exécution. Évidemment, le rappel d'animate sera placé dans la file d'attente des tâches lorsqu'il atteindra le point, donc
.mark2=false
il doit être exécuté en premierLe mouvement d'appel doit bloquer de manière synchrone,
animate bloque également de manière synchrone
Le résultat est
Si le mouvement n'est pas synchrone
Vous verrez d'abord "Run End", puis d'autres choses
Si l'animation n'est pas synchrone
Vous verrez la fin du mouvement avant le début de l'animation.
Par exemple
Le résultat est