У меня есть особая функция, которую я хочу запустить один раз и только после завершения нескольких запросов 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()
, вероятно, никогда не будет вызываться. Я могу обойти это, используя обратный вызов error
внутри любого $.ajax
, так что это меня не слишком беспокоит.
Что я хочу знать, так это то, безопасно ли это и / или является хорошей практикой?
Есть трюк, который я пропустил, или что-то еще, что могло бы работать лучше?