当 document.ready 中的函数完成时执行 js 函数
execute js function when a function inside document.ready is done
我有一个计算每台服务器性能的网站。其中一个要求是关于性能的中心部分页面,必须先完成加载,然后再在后台执行另一个功能。
此中心部分页面使用 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 :(");
});
});
这里有一种同时处理 DOM 就绪事件和 Ajax 调用的方法:
var init, ajax1, ajax2, domready;
ajax1 = $.ajax({ url: '/1' });
ajax2 = $.ajax({ url: '/2' });
domready = $.Deferred();
$(domready.resolve);
init = $.when(domready, ajax1, ajax2);
http://api.jquery.com/category/deferred-object/
那么你就不需要再关心上面的代码了:
init.done(function () { alert('success'); });
init.fail(function () { alert('failure'); });
init.done(function ($, response1, response2) {
alert(response2[0]); // shows the data from the second Ajax call
});
这是一个现场演示:http://jsfiddle.net/wared/s22dT/。
关于您的尝试,jQuery.when()
返回一个没有ready
方法的 Promise 对象:
$.when().ready() // TypeError: Object #<Object> has no method 'ready'
http://api.jquery.com/jQuery.when/
相关文章:
- 当我的函数完成时,使用 JavaScript(或 jQuery)触发一个自定义事件
- 当 document.ready 中的函数完成时执行 js 函数
- Javascript - make 函数在函数完成时告诉调用者
- jQuery .load - 仅在所有函数完成时显示
- 在上一个函数完成时执行 JavaScript 函数
- 在一个或多个函数完成时调用函数
- 在函数完成时显示加载动画
- 解决在节点.js中 for 循环后多个 writeFile 函数完成时的承诺
- 在函数完成时执行代码
- 如何在另一个函数完成时运行该函数
- 当具有异步事件的另一个函数完成时,运行一个函数
- 当is函数完成时,如何结束脚本
- 使用不同的参数多次调用同一函数.完成时:在其他函数中使用每个返回值
- 在Javascript函数完成时显示HTML元素
- 只有当另一个函数完成时才运行它
- Jquery:在一个函数完成时执行另一个函数
- Jquery改变点击的时间间隔,当点击函数完成时重置回默认值
- 当其他第一个函数完成时调用函数(回调)
- 当for循环内的函数完成时,for循环继续
- 如何让我的页面显示我的函数在完成时而不是在每个函数完成时处理的数据