【问题标题】:Call order of jQuery ready callbackjQuery 就绪回调的调用顺序
【发布时间】:2012-10-09 09:48:43
【问题描述】:

如果页面中有两个需要在文档加载完成时调用的 javaScript 函数。是否有可能任何函数都可以先执行,或者它总是第一个执行的函数?

如果你有以下代码,那么如果使用 jQuery:

$(document).ready(function(){ function1(); });

$(document).ready(function(){ function2(); });

function2 会先执行还是会始终先执行 function1

【问题讨论】:

  • 您的脚本将被逐行读取和执行
  • 这与纯 JavaScript 无关,它 100% 取决于 jQuery 如何实现 $(document).ready() 方法。
  • @Mr.Alien - 这不是问题所在。他基本上想知道事件排队的规则(如果有的话)。

标签: javascript jquery onreadystatechange


【解决方案1】:

jQuery 就绪使用 Deferred object system

ready: function( fn ) {
    // Add the callback
    jQuery.ready.promise().done( fn );

    return this;
},

(来自source code

documentation 声明

回调按照添加的顺序执行

所以是的,您的回调将按添加顺序执行。

【讨论】:

    【解决方案2】:

    如果你想让这些函数按顺序执行,为什么不直接写:

    $(document).ready(function(){ 
        function1();
        function2();
    });
    

    【讨论】:

    • "我认为这是可能的,因为 ready 事件被异步调用":这是错误的。 JQuery 确保执行的顺序是加法的顺序(见我的回答)。
    • 我不能同时拥有这些功能,因为它们基于页面中的单独事件。所以有可能它们中的任何一个、其中一个或两个都没有出现在文档中。
    【解决方案3】:

    最好利用回调函数来确定函数的执行顺序

    【讨论】:

    • “使用回调函数”是什么意思?它与这里有什么关系?
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多