jquery lorsque/alors (même si/fait) pas d'attente

J'ai regardé un grand nombre d'échantillons que l'utilisation de cette syntaxe, mais je ne vois pas ce que je"m fait mal. La "puis" la fonction est en cours d'exécution avant l'appel ajax retourne.

J'ai essayé aussi en utilisant $.reportés et quelques autres modèles en vain.

Quelqu'un peut voir ce que je suis absent?

J'ai débogué et vous pourrez voir les appels à partir de l'intérieur de la fait, puis avant l'appel ajax retourne c'est la réussite (ou l'erreur) de données.

Merci pour toute aide.

Principal de l'appel:

this.addFirstTask = function(task) {
    var totalHours = GetHours();
    $.when(totalHours).done(function (data) {
        task.TaskHours(data);
        self.add(task);
    });
};

Qu'il appelle le suivant ajax fonction:

function GetHours() {
    $.ajax({
        url: "/api/tst/GetMyData",
        type: 'GET',
        dataType: 'json',

        success: function(data) {
           return data;
        },

        error: function(data) {
            return 0;
        }
    });
};

Merci!

post-mortem:

en plus d'ajouter le retour à l'appel ajax, comme pour d'autres conseils, j'ai enlevé le succès & erreur de l'appel ajax et changé addFirstTask:

this.addFirstTask = function(task) {
    var totalHours = GetHours();
    $.when(totalHours)
     .then(function (data) {task.TaskHours(data);})
     .done(function () { self.add(task); });
};

Si GetHours réussit, je l'ai mise à jour de la TaskHours valeur. Si elle échoue, je l'ignorer. J'ai réalisé que ça FAIT, c'est comme un "ENFIN".NET est try/catch. Donc, plutôt que de l'ajout de la tâche, puis de laisser mon observables de liaison de mise à jour lorsque la valeur est de retour, même de soi-même.ajouter est la partie de l'appel asynchrone.

ne getHours retourner l'appel AJAX?
double possible de Pourquoi mon jQuery lorsque().alors() la fonction de déclenchement avant la requête ajax dans quand est-ce fait?
Gorkk, merci. Je promets que je l'ai cherché pendant des heures avant que j'ai posté. 🙂

OriginalL'auteur Julie Lerman | 2014-02-23