[英]Dealing with Async calls in Javascript
我在这里遇到了小麻烦。 在我的document.ready函数中,我定义了一个对象,并且该对象正由三个不同的ajax调用填充(在document.ready内部)。 现在我想做一个
console.log(myObject);
仅当3个异步调用已完全执行时。 请提出一种方法。
使用我建议您创建一个这样的函数:
function onAllInformationIsReady() {
console.log(myObject);
}
function isAllInformationReady() {
// verify here if you have all the information
}
并且您在ajax调用中执行了类似的操作(我不假设您在此处使用jQuery,请替换为ajax调用方法)
$.ajax({
type: "POST",
url: "some.php",
data: "...n",
success: function(msg){
if(isAllInformationReady())
onAllInformationIsReady();
}
});
顺便说一句,如果您使用的是jQuery,则可以进行如下所示的同步ajax调用:
$.ajax({
type: "POST",
url: "some.php",
data: "...n",
async: false,
success: function(msg){
}
});
尝试使用jQuery 1.5的新“ 延迟 ”对象:
var j1 = $.ajax(...);
var j2 = $.ajax(...);
var j3 = $.ajax(...);
j1.success(function(data) {
// do something with data
});
j2.success(function(data) {
// do something with data
});
j3.success(function(data) {
// do something with data
});
$.when(j1, j2, j3).done(function() {
console.log(myObject);
});
这三个.success()
函数将被异步调用并将填充myObject
,然后,一旦所有三个AJAX请求均已完成, done
函数将仅由$.when()
调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.