XMLHttpRequest problem z pętlą "for"

0
function loadDoc(x) {	
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {    
      document.getElementById("demo"+x).innerHTML = this.responseText + x + "<br>"; 	   
    }
  };
  xhttp.open("GET", "ajax_info.txt", true);
  xhttp.send();
}

function mojafunkcja() {
	for (i=0; i<256; i++) {		
		loadDoc (i);
	}
	//Dalszy kod przetwarza dane zebrane przez kod
}

Mam taki problem że chcę zrobić zapytanie XMLHttpRequest() i jak pobieram dane z serwera a nie z dysku twardego jak w tym przykładzie to aplikacja zawiesza się.
Myślę że to będzie problem asynchronizacji xhttp.open z wartością TRUE (nie chcę zmieniać synchronizacji gdyż docelowo przeglądarki będą tylko oferować TRUE), jak mam poprawić kod by pętla się wykonywała dane przetwarzały się lecz jak odbierze dane to pętla "leci dalej"
Chyba że się mylę i ktoś może mi pomóc rozwiązać ten problem.

0

Możesz zrobić coś takiego:

        function loadDoc(x) {
            return new Promise(function (resolve, reject) {
                var xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function () {
                    if(this.readyState !== 4) return;

                    if (this.status == 200) {
                        resolve(this.responseText);
                    } else {
                        reject();
                    }
                };
                xhttp.open("GET", "ajax_info.txt", true);
                xhttp.send();
            });
        }

        function loadAllDocs(x) {
            if(x < 256) {
                loadDoc(x).then(function(response) {
                    // do something with response
                    loadAllDocs(++x);
                });
            }
        }

        loadAllDocs(0);

Aczkolwiek trochę słabo, tyle strzałów na raz zamiast załatwić to jednym requestem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1