Je ne peux pas obtenir le fait / échouer / toujours rappeler sur chacune de mes demandes AJAX à exécuter avant les rappels de l'objet différé.
Le problème que j'ai est que certaines de mes demandes Ajax peuvent échouer, mais je dois exécuter le Même code si on échoue ou aucun échoue. P>
difficile à expliquer exactement, alors j'ai fait ce violon pour aider à montrer le problème que j'ai.
http://jsfiddle.net/zzsxv/ p> J'ai lu beaucoup de réponses sur ce sujet, mais je ne crois pas qu'aucun ajustement mon besoin exactement. P> Plus d'informations nécessaires pour vous aider s'il vous plaît laissez-moi savoir et je vais l'ajouter une fois que je reviens . Merci d'avance. P> Je comprends ce qui se passe. Je sais juste comment le faire pour éviter ce problème. J'ai essayé d'utiliser ..quez-moi aussi avec les mêmes résultats. Une fois qu'une demande est rejetée, elle tire le rappel d'échec avant d'attendre les autres rappels. P> P>
Modifier H2>
3 Réponses :
Hey, j'ai eu un problème similaire à cela, je n'ai pas le code avec moi mais je vais essayer de le trouver. P>
Quoi qu'il en soit, ce que j'ai fait a eu une variable avec le nombre d'objets dont j'avais besoin d'attendre et de la diminuer simplement lorsque l'une d'entre elles est terminée, puis vérifiez si c'était 0 s'il est possible d'appeler l'autre fonction. p>
En fait, j'ai eu la même idée. Je voulais vraiment l'éviter, juste à des fins de codes plus propres que je suppose. Merci pour vos commentaires. Je serais heureux de voir votre solution juste au cas où personne d'autre d'autre n'a une idée si cela est possible sans une solution de contournement.
était la seule façon dont j'ai trouvé au moment où j'en avais besoin.
Selon Documentation JQuery et vous pouvez l'utiliser comme ça: P> $. Quand code> incendie rappel Tous forts> de paramètres sont résolus ou
$. Quand code>:
custom_when(a1, a2, a3, function() {
// do some stuff.
});
Cela semble bon. Merci pour la démo de violon. Je ne peux pas l'implémenter dans ma construction avant ce soir ou demain. Mais une fois que je fais, je ferai rapport.
Je vois ce que vous essayez de faire ici, mais il n'y a pas de méthode pratique. Cela fonctionne:
whenAllResolved(a1, a2, a3).done(function () { $('body').append('defer always <-- should be after all<br />'); }); function whenAllResolved(){ var d = $.Deferred(), args = arguments, verifyDeferreds = function(){ var allResolved = true; $.each(args, function(i, arg){ if(arg.state() === 'pending'){ allResolved = false; return false; } }); if (allResolved){ d.resolve(); } }; $.each(arguments, function(i, arg){ arg.always(verifyDeferreds); }); verifyDeferreds(); return d; }
Merci pour votre fonction et votre violon. Je vais le tester bientôt et rapporterai.
Si vous n'aviez pas déjà lu ce fil: Stackoverflow.com/questions/5518181/...