Je fais un appel à openHand() à partir d'une boucle for. La boucle itère à travers un ensemble de links.Je veux attendre que le readyState devienne 4 (la réponse arrive) avant ? va dans la prochaine iteration.How puis-je faire s'il vous plaît aiderboucle à travers certaines URLs en utilisant la fonction open() de XMLHttpRequest
Répondre
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.
je suis un peu confus.Pouvez-vous s'il vous plaît donnez-moi un exemple de code pour cela. – netha
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
}
}
}
}
Avez-vous envisagé d'utiliser les fonctions AJAX jQuery? –