【发布时间】:2010-08-04 11:54:05
【问题描述】:
我有一个特定的函数我想运行一次,并且只在完成几个 AJAX 请求之后。
我目前的解决方案有点像这样:
function doWork() {
//This is the function to be run once after all the requests
}
//some tracking/counting variables
var ajaxDoneCounter = 0;
var numOfAjaxRequests = 5;
var workDone = false;
function doWorkTrigger() {
ajaxDoneCounter++;
if( !workDone && ajaxDoneCounter >= numOfAjaxRequests ) {
workDone = true;
doWork();
}
}
// ...
//and a number of ajax requests (some hidden within functions, etc)
//they look something like this:
$.ajax({
url: "http://www.example.com",
dataType: "json",
success: function( data ) {
//load data in to variables, etc
doWorkTrigger();
}
});
上面的一个明显缺陷是任何不成功的 AJAX 调用都不会增加ajaxDoneCount,因此doWork() 可能永远不会被调用。我可以在任何$.ajax 中使用error 回调来解决这个问题,所以我不会太担心。
我想知道的是以上是否安全和/或良好的做法?
有没有我错过的技巧,或者其他可能更好的方法?
【问题讨论】:
-
这是我建议您阅读问题描述时所做的。我不确定“我想不出更好的”是一个合适的“答案”,尽管只是评论。 ;-)
标签: javascript jquery ajax