2015-08-04 1 views
0

J'ai ce morceau de codeAjax ne pas exécuter de manière asynchrone

function getMesssages(id,c) { 


     function waitForServerCall(id,c) { 

      $.get(href("~/polling/" + id), function (response) { 

       var r = c(response); 
       if (r) { 
        return false; 
       } 

       waitForServerCall(id); 
      }); 

     } 

     waitForServerCall(id,c); 

     $.post(href("~/batch/export/?batches=3344&pollid=" + id), function (response) { 
      c(response); 
      cancelCall = true; 
     }); 
    } 

Le $.get dans la méthode waitForServerCall obtenir seulement exécuter lorsque l'$.post recive la réponse du serveur. Pourquoi?

C'est le ajaxSettings:

accepts: Object 
async: true 
contentType: "application/x-www-form-urlencoded; charset=UTF-8" 
contents: Object 
converters: Object 
flatOptions: Object 
global: true 
isLocal: false 
jsonp: "callback" 
jsonpCallback:() 
processData: true 
responseFields: Object 
type: "GET" 
url: "http://localhost:59161/" 
xhr: In() 
__proto__: Object 

mise à jour. Ce que je fais est longue interrogation, la demande de poste est un processus de longue durée donc j'ai besoin de connaître certains événements que le serveur va déclencher, la méthode waitForServerCall informer le client sur les événements qui se sont produits. Mais puisque la méthode $ .get s'exécute une fois que la réponse $ .post est recive, le processus de notification ne fonctionne pas.

Mise à jour 1: Im utilisant .NET 4.0 et Jquery 1.9.1.

Oui, la requête $ .get est exécutée en premier mais pas la réponse est recive jusqu'à ce que $ .post obtienne la réponse. Une fois que $ .post a reçu la réponse, $ .get s'exécute correctement. Mais je m'attends à ce que $ .get obtienne la réponse du serveur même si $ .post n'a pas encore reçu de réponse.

+0

S'il vous plaît décrire ce comportement que vous essayez d'atteindre. Vous essayez de décrire un problème, mais ne dites pas vraiment comment vous voulez qu'il fonctionne. De plus, il semble que vous ayez une erreur après avoir appelé 'waitForServerCall (id);' parce que vous ne passez pas le second argument. – jfriend00

+1

Comment le savez-vous? Les symptômes décrits n'ont pas de sens. Ressemble plus à un cas de code fait ce qui est écrit mais pas ce que vous attendiez – charlietfl

+0

Lire la mise à jour s'il vous plaît – Misters

Répondre