我有一个网站,可以计算每个服务器的性能。要求之一是关于表演的中间部分页面,必须首先完成加载,然后再在后台执行其他功能。

该中心部分页面使用ajax调用。它们是在js文件的document.ready中定义的:

$(document).ready(function () {
// ajax call here
// another ajax call here
// third ajax call here
});


然后在文档内部的函数准备好之后我要执行的函数完成了:

function functionA() {
// some codes here
});


我尝试使用此:

$.when(document).ready(function () {
}).done(functionA);


但我无法使其运行..任何建议将不胜感激。提前致谢!

最佳答案

AJAX中的第一个字母表示异步,这意味着在您的document.ready事件结束时,它们可能会在其他地方进行某些处理。 document.ready不会等待它们完成。

您需要使用.when设置jQuery,以告诉您所有三个AJAX调用何时完成:

// Document.ready
$(function() {
    // Any synchronous code you may do on DOM ready goes here

    // Set up the promise
    $.when(
        // Pass in all your AJAX calls.
        $.ajax({ url: "/AjaxCall1?param=true" }),
        $.ajax({ url: "/AjaxCall2?param=1" }),
        $.ajax({ url: "/AjaxCall3?param=yup" })
    ).then(function() {
        console.log("All AJAX requests finished");
    }, function() {
        console.log("Something went wrong :(");
    });
});

10-05 20:43
查看更多