En fait, jQuery définit maintenant un "quand" la fonction de ce but.
http://api.jquery.com/jQuery.when/
Il accepte n'importe quel nombre de droits Différés à des objets comme arguments, et l'exécution d'une fonction lorsque tous d'entre eux à résoudre.
Cela signifie que, si vous voulez lancer (par exemple) quatre requêtes ajax, puis effectuer une action lorsque ils sont en fait, vous pourriez faire quelque chose comme ceci:
$.when(ajax1(), ajax2(), ajax3(), ajax4()).done(function(a1, a2, a3, a4){
// the code here will be executed when all four ajax requests resolve.
// a1, a2, a3 and a4 are lists of length 3 containing the response text,
// status, and jqXHR object for each of the four ajax calls respectively.
});
function ajax1() {
// NOTE: This function must return the value
// from calling the $.ajax() method.
return $.ajax({
url: "someUrl",
dataType: "json",
data: yourJsonData,
...
});
}
À mon avis, il en fait une claire et propre syntaxe, et évite impliquant toutes les variables globales telles que ajaxStart et ajaxStop, ce qui pourrait avoir des effets secondaires indésirables de votre page se développe.
Si vous ne savez pas à l'avance combien d'ajax arguments que vous avez besoin d'attendre pour (vous voulez utiliser un nombre variable d'arguments), il peut encore être fait, mais il est un peu plus embêtant. Voir un tableau de Deferreds $.lorsque() (et peut-être de jQuery .lors du dépannage avec un nombre variable d'arguments).
Si vous avez besoin plus profond de contrôle sur les modes de défaillance de l'ajax scripts etc., vous pouvez économiser de l'objet renvoyé par .lorsque() - c'est un jQuery Promesse objet englobant tous les originaux des requêtes ajax. Vous pouvez appeler .alors() ou .fail() pour ajouter des détails à la réussite/l'échec des gestionnaires.