2010-01-07 5 views
1

Je fais un jeu simple avec jquery et je veux faire un appel au service web asp.net que je sais comment faire, mais l'appel du serveur doivent continuer à fonctionner jusqu'à ce que j'obtienne une réponse spécifique du serveur.Boucle infinie attendre 2 secondes, faire appel serveur jquery

Je vais attendre que 3 secondes à chaque cycle de la boucle

function servercall() { 
      while (true) { 
       // code for clone and insert ... 
       $.ajax({ 
        type: "POST", 
        url: "Server.asmx/HelloWorld", 
        data: "{'name': '" + $('#name').val() + "', 'time': '2pm'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
         AjaxSucceeded(msg); 
        }, 
        error: AjaxFailed 
       }); 
       setTimeout("nothing", 2000); 
      } 

     } 
+3

Une question? –

+0

Demandez-vous comment faire fonctionner une boucle infinie pendant 2 secondes? :) Je voudrais savoir comment faire ça! –

+0

Je pense qu'il veut une boucle avec un retard entre chaque itération. Pas de colline pour un grimpeur, en utilisant la récursivité. Vois ma réponse. –

Répondre

3

Utilisation récursion avec setTimeout. Et assurez-vous de démarrer la minuterie lorsque vous recevez une réponse, de sorte que vous comptez des retards de réseau (vous ne voulez pas un tas de demandes en même temps) ...

function servercall() { 
    $.ajax({ 
    complete: function(xhr) { 
     var msg = xhr.responseText; 
     if(xhr.statusCode == 200) 
     AjaxSucceeded(msg); 
     else 
     AjaxFailed(msg); 

     setTimeout(servercall, 2000); //recursion magic 
    } 
    }); 
} 
-1

Set intervalle est plus utile:

<script type='text/javascript'> 

setInterval("servercall()", 2000); 

function servercall() { 

       // code for clone and insert ... 
       $.ajax({ 
        type: "POST", 
        url: "Server.asmx/HelloWorld", 
        data: "{'name': '" + $('#name').val() + "', 'time': '2pm'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
         AjaxSucceeded(msg); 
        }, 
        error: AjaxFailed 
       }); 

      } 

     } 

</script> 
+0

s'ils ont Internet lent et il faut une seconde pour chaque réponse? –

+2

C'est quelque chose que l'on doit prendre en considération si on a décidé de faire une boucle infinie AJAX. Il m'a demandé 2 secondes, je lui ai donné deux secondes. – Zaje

+0

Tout ce que je dis est que cela pourrait avoir plusieurs demandes en cours à la fois, qui n'a jamais désiré. –