Wpis z mikrobloga

via Wykop Mobilny (Android)
  • 0
https://codepen.io/anon/pen/Yodbey

Metoda: function handleFiles(files):
function handleFiles(files) {
___files = [...files];
__for (var i = 0; i < files.length; i++) {
______var id = makeid(10);
______previewFile(files[i], id);
______uploadFile(files[i], id, i);
__}
}

Najpierw powinna dodać do html obrazek, a następnie wykonać uploadFile, gdzie w odpowiedzi od serwera dodawany jest napis pod obrazkiem. Problem z tym, że jak wybiore np. 500 plików, to do pierwszego się nie dodaje napis (bo w applyResults wykrywa, że document.getElementById(id).innerText jest nullem, pomimo tego, że widzę w html, że id istnieje).

Tak jakby z jakiegoś powodu dla pierwszego elementu najpierw było wywoływane uploadFile a potem previewFile.

Problem występuje tylko, gdy dodam bardzo dużo plików na raz. Gdy dodam ich np. 50 to wszystko działa ok.

W prosty sposób rozwiązałem to tak:
var fig = document.getElementById(id);
if (fig === null) {
__setTimeout(function () {
______document.getElementById(id).innerText = value;
__}, 1000);
} else {
___fig.innerText = value;
}

Jest na to jakieś lepsze rozwiązanie?

#programista15k #naukaprogramowania #javascript
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach