Ich habe eine bestimmte Funktion, die ich einmal ausführen möchte und erst nach dem Abschluss mehrerer AJAX-Anfragen.Auslösen einer Funktion erst nach dem Abschluss mehrerer AJAX-Anfragen
Meine aktuelle Lösung sieht ein bisschen wie folgt aus:
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();
}
});
Eine offensichtliche Gefahr in der oben ist, dass jeder AJAX-Aufruf, der nicht erfolgreich ist, wird ajaxDoneCount
nicht erhöht und so doWork()
wird wahrscheinlich nie genannt werden. Ich kann das mit dem error
Callback innerhalb von jedem $.ajax
umgehen, so dass mich das nicht zu sehr beunruhigt.
Was ich wissen möchte ist, ob das oben genannte sicher und/oder gute Praxis ist?
Gibt es einen Trick, den ich verpasst habe, oder irgendetwas anderes, das besser funktionieren könnte?
Das, was ich vorgeschlagen hätte, tun Sie aus dem Lesen der Problembeschreibung. Ich bin mir nicht sicher "Ich kann mir nichts Besseres vorstellen" ist eine passende "Antwort", obwohl ich stattdessen nur kommentiere. ;-) – Chris