2010-08-08 5 views

Répondre

1

plutôt que d'utiliser une boucle pour contrôler les itérations, mettre en place un objet:

1) Lors de la création est passé un « nextIter » objet de rappel

2) Fait son propre appel

3) Puis readystate4 ...

3a) Est-ce que son propre traitement

3b) Appelle le membre de la fonction 'nextIter'. Cet objet serait une autre instance du même objet.

De cette façon, votre boucle serait tout simplement créer une structure d'objet où,

objA < whenreadystate4 refs > objB < whenreadystate4 refs > objc ...

... et les appels enchaînent tout comme chacun L'appel ajax se termine, et passe au suivant dans la chaîne ... jusqu'à ce que l'élément bottom fasse référence à null.

J'espère que cela a du sens.

+0

je suis un peu confus.Pouvez-vous s'il vous plaît donnez-moi un exemple de code pour cela. – netha

0

Btw mon programme actuel ressemble à ceci et je veux attendre jusqu'à ce que le readyState devient 4 avant d'aller à la prochaine itération

onMenuItemCommand: function() { 
    var i;//iteration value of the loop 

    var xhr=new XMLHttpRequest();//create the XMLHttp request 
    var e=content.document.getElementsByTagName('a');// get all the links in the content page 

    for(i=0;i<e.length;i++){ // loop goes through the selected links 
    webassist.setLink(e[i]);  //set the link element 

    if(e[i]!=""){ // check the link's href value is null 

     xhr.open('HEAD',e[i] ,true); 
     xhr.send(null); 

    } 
    else{ //if the href value is null set it to color red 
     webassist.setColor("#FF0000");//red 
    } 

    xhr.onreadystatechange=function(evnt){ 
     if(xhr.readyState==4){ 
     if(xhr.status==200){ 
      webassist.setColor("#99FF66");//green 
     } 
     else{ 
      webassist.setColor("#FF0000");//red 
     } 
     } 
     else{ 
     webassist.setColor("#FF00FF"); //pink 
     } 
    } 
    } 
}