为什么这段代码会同步工作?
$this.animate( { 'left': '+=200px' } );
$this.animate( { 'top' : '+=200px' } );
我真的很怀疑是否可以在 JavaScript 中同步执行函数。
还有
doSomething();
doSomethingMore();
function doSomething() {
setTimeout(function() {
alert('doSomething finished');
}, 3000);
}
function doSomethingMore() {
setTimeout(function() {
alert('doSomethingMore finished');
}, 1000);
}
如何在函数 doSomething 完成之前不执行函数 doSomethingMore。 或者类似的东西。
谢谢。
最佳答案
我只是在这里猜测一下,因为我也无法遵循 jQuery 源代码。 :)
.animate()
将动画添加到队列中。默认情况下,这是$.fx
。当一个项目被添加到队列中时:如果是第一个,则运行;如果不是,它将等待,直到它成为队列中的第一项。一旦 jQuery 完成运行动画,它就会从队列中删除第一个项目(即刚刚完成的动画),并运行第二个项目。
因此,它似乎只是同步运行。如果您在第二次调用 .animate()
之后放置另一条语句,您将看到它实际上立即执行。这也是 .animate()
接受回调的原因。
还有其他函数可以让您操作队列。例如 .stop()
和 .queue()
。
关于javascript - 为什么 jQuery.animate 是同步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23324488/