2014-07-15 1 views
0

J'ai une fonction récursive qui verrouille mon navigateur en cours d'exécution.Empêche la fonction récursive de verrouiller le navigateur

Lorsque cette fonction est en cours d'exécution, toutes mes commandes jquery sont verrouillées en attente de la fin de la fonction.

Que dois-je faire pour rendre cette fonction asynchrone?

Cette fonction fonctionne sur document.ready

function SearchTrip() { 
$.post("/extensions/searchtrip", { 
     from: $("#from").val(), 
     to: $("#to").val(), 
     ddate: $("#ddate").val() 
    }, 
    function (mReturn) { 
     if (mReturn.fTotalAmount != '0,00') { 
      var sAirline = ''; 
      if (mReturn.Airline) 
       sAirline = ' pela ' + mReturn.Airline; 
      $("#buscandoPassagens").hide(); 
     } else if (SearchTripAmount < 5) { 
      SearchTripAmount++; 
      setTimeout(function() { 
       SearchTrip(); 
      }, 500); 
     } else { 
      $("#pNaoEncontrada").show(); 
     } 
    }, 
    "json"); 
} 
+2

Pourquoi êtes-vous mise à l'eau récursivement? – Kasyx

+0

Utilisez setTimeout pour chaque appel récursif. –

+0

'SearchTripAmount' est une variable globale? Êtes-vous sûr que ça augmente? – Blazemonger

Répondre

0

Si vous voulez l'exécuter de manière asynchrone juste envelopper tout avec setTimeout:

function SearchTrip(){ 
    setTimeout(function() { 
     //this is your $.post i just deleted 'content' to make answer easier to read 
     $.post(); 
    }, 0); 
} 
+0

Ok, mais comment terminer la boucle après avoir exécuté la fonction 5 fois sans résultat? Je ne veux pas que cette fonction fonctionne pour toujours. –

Questions connexes