2011-09-27 2 views
0

J'ai une pile de demande ajax:Async demandes ajax ne sont pas vraiment async (JQuery et Zend)

$("someTable tr").each(function() { 

    // send the data. 
    var scriptURL = "/module/action/data/" + $(this).find(".data").html() + "/"; 

    document.cyonVars.xhrPool[count] = $.ajax({ 
    type: "GET", 
    url: scriptURL, 
    queue: "autocomplete", 
    cancelExisting: true, 
    dataType: 'json', 

    success: function(data){ 

     // do something 

     } 

    } 
    }); 
    count++; 
}) 

Bien que ces demandes sont en cours d'exécution, l'utilisateur peut appuyer sur un bouton. Cela déclenche une autre requête ajax. Quelque chose comme ça:

var scriptURL = "/module/anotheraction/" + 
data) + "/"; 

$.ajax({ 
    type: "GET", 
    url: scriptURL, 
    queue: "autocomplete", 
    cancelExisting: true, 
    dataType: 'json', 

    success: function(data){ 
    // Do another thing 
    } 
}); 

Les demandes de la première action répondant que je souhaite asynchrone. Lorsqu'un utilisateur déclenche la deuxième demande que l'on attend jusqu'à ce que les autres demandes sont terminées. Mais la deuxième demande devrait être faite plus tôt. J'ai déjà travaillé avec session_write_close() n'a rien changé. Merci pour ton aide.

Répondre

1

Je ne suis pas si sûr, qu'il devrait être traité plus loin. les navigateurs ont des limites sur les connexions au même serveur et si la demande de réponse est longue, votre application peut s'arrêter sur quelques requêtes ou plus. il suffit de penser que les requêtes asynchrones sont déclenchées de manière asynchrone (le code après l'exécution de la requête ajax), mais les requêtes sont exécutées en séquence.

+0

Merci. Le problème était la session zend. Il verrouille tout lorsque vous appelez zend_session :: start() –

0

Le problème était Zend_Session :: Start();

Je devais éviter d'utiliser Zend_Session en procédant à des demandes asynchrones