6
votes

commandes de rappel différé jquery ajax différé

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.

difficile à expliquer exactement, alors j'ai fait ce violon pour aider à montrer le problème que j'ai. http://jsfiddle.net/zzsxv/ xxx

J'ai lu beaucoup de réponses sur ce sujet, mais je ne crois pas qu'aucun ajustement mon besoin exactement.

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.


Modifier

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.


1 commentaires

Si vous n'aviez pas déjà lu ce fil: Stackoverflow.com/questions/5518181/...


3 Réponses :


0
votes

Hey, j'ai eu un problème similaire à cela, je n'ai pas le code avec moi mais je vais essayer de le trouver.

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.


2 commentaires

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.



2
votes

Selon Documentation JQuery $. Quand code> incendie rappel Tous forts> de paramètres sont résolus ou un fort> d'entre eux est rejeté. Alors, que diriez-vous d'utiliser quelque chose comme ça au lieu de $. Quand code>: xxx pré>

et vous pouvez l'utiliser comme ça: P>

custom_when(a1, a2, a3, function() {
    // do some stuff.
});


1 commentaires

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.



1
votes

Je vois ce que vous essayez de faire ici, mais il n'y a pas de méthode pratique. Cela fonctionne:

jsfiddle strong> p>

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;
}


1 commentaires

Merci pour votre fonction et votre violon. Je vais le tester bientôt et rapporterai.