我有一个网站,可以计算每个服务器的性能。要求之一是关于表演的中间部分页面,必须首先完成加载,然后再在后台执行其他功能。
该中心部分页面使用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 :(");
});
});