我有一个特定的函数,我想运行一次,并且只在完成几个AJAX请求之后。只有在多个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
回调来解决这个问题,这样就不用担心太多。
我想知道的是以上是否安全和/或良好的做法?
有没有我错过的技巧,或其他任何可能更好的工作?
它是什么,我会建议你从阅读问题描述做。我不确定“我想不出任何更好的东西”是一个合适的“答案”,尽管如此只是评论而已。 ;-) – Chris 2010-08-04 11:58:17