javascript - 为什么 jQuery.animate 是同步的?

标签 javascript jquery

为什么这段代码会同步工作?

$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/

相关文章:

jQuery 悬停时淡入/淡出/淡出,无闪烁或队列

php - 使用 jQuery AJAX 出现语法错误

javascript - 使用 JavaScript 的 HTML 动画

php - 检查二十一点的赢家

javascript - 获取另一个输入的值

jquery - 如何将 Rails 路线助手与 jQuery 结合使用?

javascript - 根据 mySQL 数据库中的数据动态更改 svg 图像元素

javascript - Angular JS - NG-Repeat with filters and groupBy

javascript - 如何更改除跨度之外的文本

javascript - 清除jquery多重选择中选定选项的复选框