Wpis z mikrobloga

Chcę dać funkcję przypisywaną do onload poza pętlę.

let xhr = new XMLHttpRequest();
for(var i=0; i<tabDTD.length; i++){
if(ss.storage.retl10n[tabDTD[i]] === undefined) {
xhr.open("GET", tabDTD[i], false);
xhr.onload = function(event) {
ss.storage.retl10n[tabDTD[i]] = xhr.responseText;
};

xhr.send();
}
}

Znam kilka sposobów, ale żaden nie wydaje się wystarczająco odpowiedni.
Jak to zrobić?

#webdev #javascript
  • 1
Hej.
Bardzo dziwny pomysł, ale jeśli musisz to musisz sobie zachować zmienną w nowym kontekście tworząc środowisko.

// ...
for (var i = 0; i < tabDTD.length; i++) {
    let item = tabDTD[i];

    if (ss.storage.retl10n[item] === undefined) {
        (function (prop) {
            let xhr = new XMLHttpRequest();
            xhr.open("GET", prop, false);
            xhr.onload = function (event) {
                ss.storage.retl10n[prop] = xhr.responseText;
            };

            xhr.send();
        }(item));
    }
}
// ...

Siłą rzeczy (brak kodu reszty aplikacji) nie mogłem