DOM 运行 jQuery AJAX 请求的最佳时间?

Best DOM time to run jQuery AJAX request?

我正在构建一个 WordPress AJAX 插件,用于从各种社交媒体网站获取用户的赞数。该插件使用一个 jQuery AJAX 请求来最初向所有社交媒体网站发出请求。

对所有不同社交媒体网站的初始调用可能会非常慢。在初始调用之后,赞计数被缓存在 WordPress 数据库中。

我正在构建自定义 jQuery 函数来发出 AJAX 请求,我想知道将 AJAX 函数绑定到的最佳事件是什么。

.就绪

$(document).ready(function() {
    // code here
});

.load

$(window).load(function() {
    // code here
});

这里是load和ready的区别:
就绪: 在 HTML-文档加载且 DOM 就绪时执行
load: 完整页面完全加载时执行,包括所有框架、对象

更新:
正如@rnevius 在评论中所说,您可以 运行 没有任何 DOM 事件的请求,因此您可以在脚本加载时执行请求。

所以尽早在 ready

上完成

你不会遇到真正在load之前等待ready的,只要在jquery同步加载后放在html的头部即可。如果您想要所有异步操作,包括加载 jquery,那么您必须将其准备就绪。 这是一篇文章,还有很多类似的文章。 http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/

您无需等到就绪或加载事件发生时发送您的 ajax 呼叫。事实上,如果您不等待,您会更快地获得 ajax 结果。您需要等待 DOM 准备就绪,然后才能将结果放入页面。

因此,查看结果的最快方法是立即启动 ajax 调用(从 head 部分),然后在 .ready() 或 ajax 调用完成时启动(以最后一个为准),然后将结果放入您的页面。

您可以在 <head> 部分执行此操作,但在加载 jQuery 之后:

(function() {
    // set up a deferred for when the document is ready
    var docready = $.Deferred();
    $(document).ready(docready.resolve);

    // kick off your ajax call
    var p = $.ajax(...);

    $.when(p, docready).then(function(data) {
        // data[0] is your ajax result
        // and your page is ready to be modified
    });
})();

通常我们根据vlio20 给出的原因使用ready,但您也可以选择使用load。 它实际上取决于需求,因为加载等待所有元素加载,因此我们更喜欢准备就绪。