Javascript 为什么jQuery.animate是同步的?

Javascript 为什么jQuery.animate是同步的?,javascript,jquery,Javascript,Jquery,为什么这段代码是同步工作的 $this.animate( { 'left': '+=200px' } ); $this.animate( { 'top' : '+=200px' } ); 我真的怀疑是否有可能在JavaScript中同步执行函数 及 如何在函数doSomething完成之前不再执行函数doSomething。 或者类似的 谢谢。您将调用该方法两次,因此它将按照当前的工作方式执行。要按照您希望的方式执行,您必须在一次调用中执行以下操作: $this.animate({left:

为什么这段代码是同步工作的

$this.animate( { 'left': '+=200px' } );
$this.animate( { 'top' : '+=200px' } );

我真的怀疑是否有可能在JavaScript中同步执行函数

如何在函数doSomething完成之前不再执行函数doSomething。 或者类似的


谢谢。

您将调用该方法两次,因此它将按照当前的工作方式执行。要按照您希望的方式执行,您必须在一次调用中执行以下操作:

$this.animate({left: '+=200px',top : '+=200px'});

我只是想在这里猜测一下,因为我也不能理解jQuery的源代码。:)

.animate()
将动画添加到队列中。默认情况下,这是
$.fx
。将项目添加到队列时:如果是第一个,则运行该项目;如果不是,则等待它成为队列中的第一项。一旦jQuery完成运行动画,它将从队列中删除第一个项目(即刚刚完成的动画),并运行第二个项目。
因此,它似乎只是同步运行。如果在第二次调用
.animate()
后放置另一条语句,您将看到它实际上立即执行。这也是
.animate()
接受回调的原因


还可以使用其他函数操作队列。例如
.stop()
.queue()

你能解释一下你的问题吗。我不太明白。@putvande现在我清理了语法是否更容易理解?它不是同步的,因为代码在动画实际发生之前执行并返回。不过,它只是对动画进行排队。“我真的怀疑是否有可能在JavaScript中同步执行函数。如果可能,如何执行?”
同步执行的函数(a,b){return a+b}
,还是我遗漏了什么?@Sunil D.-现在我更新我的问题。这不是OP想要的——他们想知道它为什么同步运行。jQuery如何在动画完成之前知道?-谢谢。@user2438933抱歉,我不理解你的评论。你的意思是,jQuery怎么知道动画什么时候结束?你说“一旦动画结束,下一个动画就会开始。”怎么做?-对不起,在我的英语里,是的,我现在有了一个队列概念。如果我想实现我的队列,我如何知道第一个队列已经完成,并将第二个队列设置为等待,如果我的问题没有,很抱歉clear@user2438933jQuery自己负责以正确的顺序运行动画。这就是你要问的吗?
$this.animate({left: '+=200px',top : '+=200px'});