Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# probleme de boucle i++

Envoyé par : efdur

Date : 29/01/2008 17:24

Bonjour, je fait une boucle pour envoyer des fractions de chaines au serveur.
La chaine (textesplit) est coupée suivant les "." puis chaque sous chaine est envoyée l'une après l'autre.
Tous vas bien si je clique "OK" sur chaque alert.
Si je retire l'alerte le code ne fonctionne plus.
Exemple du code:

     var textesplit = "chien.chat.poisson"
     var tabTexte   = textesplit.split(".");        
     for (i=0 ; i< tabTexte.length ;i++)
    { 
      texte = tabTexte[i];
      alert("texte = "+texte);       //Si je retire le code ne fonctionne plus
      selectURL = (url+texte);  
      xrequest.onload = parse_lareponse;     
      xrequest.open("GET", selectURL, true);
      xrequest.send(null);   
    } 

si j'ai trois cent sous chaines je vais surement choper une ampoule :) J'ai essayer de remplacer ma ligne d'alerte par "setTimeout (2000);" mais ça ne fonctionne pas...
Une idée? Merci.

# Re: probleme de boucle i++

Envoyé par : omicron

Date : 30/01/2008 08:09

Une idée ? Euh oui , si tu passais en mode synchrone ?

# Re: probleme de boucle i++

Envoyé par : efdur

Date : 30/01/2008 14:17

Oui c'est mieux, Merci :)

# Re: probleme de boucle i++

Envoyé par : efdur

Date : 08/02/2008 15:04

En faite c'est très bien même trop bien,je m'explique:
Les requetes sont postées trop vite (je pense) et arrivé a un certain nombre de requetes un serveur comme (GOOGLE) me redirige sur une page d'erreur et m'indique que je suis infecté par un spyware ou logiciel espion!
D'ou l'idée de placer un setTimeout dans la boucle et de temporiser les requetes.Mais cela semble impossible...

var textesplit = "chien.chat.poisson"
    var tabTexte   = textesplit.split(".");        
    for (i=0 ; i< tabTexte.length ;i++)
   { 
     texte = tabTexte[i];
     selectURL = (url+texte);
//les deux lignes suivante bloc la fonction...
     if (selectURL = (url+texte)) {setTimeout(pause, 1000);}
     pause = function () {continue;}    
//  
     xrequest.onload = parse_lareponse;     
     xrequest.open("GET", selectURL, false);
     xrequest.send(null); 
   } 

# Re: probleme de boucle i++

Envoyé par : mymyoux

Date : 21/02/2008 22:53

Bonsoir, utilise plutot setInterval qui est plus fait pour ça (ou alors tu peux enchainer les setTimeout)

quelquechose comme :

var textesplit = "chien.chat.poisson"
var tabTexte   = textesplit.split("."); 
var monInterval = setInterval(executeur,1000); //lance la fonction toutes les secondes
var i=0;
function executeur(){
   var texte=tabTexte[i++];
   if(i==tabTexte.length){        // une fois qu'on a parcouru tout le tableau
      clearInterval(monInterval); //on annule le setInterval   
   }
   var selectURL = (url+texte);
   xrequest.onload = parse_lareponse;     
   request.open("GET", selectURL, false);
   xrequest.send(null);  
}

si tu veux utiliser setTimeout tu le places à la fin de ta fonction si le tableau n'est pas fini d'être parcouru voilà

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.