第一次返回时如何转到下一个xhr

时间:2020-04-24 18:43:19

标签: javascript jquery asynchronous

我在加载多个图像时遇到了问题,这些图像是通过拖放操作完成的,当我放置6张图像时,银行中仅插入了1张图像,看来它们被覆盖了。我需要的是只能在第一个图像返回时才能插入第二个图像。

我试图用允诺,但没有成功。

async function getTodos() {
for (const [idx, url] of urls.entries()) {
const todo = await fetch(url);
console.log(`Received Todo ${idx+1}:`, todo);
}

console.log('Finished!');
}

这是我的代码 :

window.addEventListener("load", function () {
// GET THE DROP ZONE
var uploader = document.getElementById('uploader');

// STOP THE DEFAULT BROWSER ACTION FROM OPENING THE FILE
uploader.addEventListener("dragover", function (e) {
    e.preventDefault();
    e.stopPropagation();
});

// ADD OUR OWN UPLOAD ACTION
uploader.addEventListener("drop", function (e) {
    e.preventDefault();
    e.stopPropagation();

    // RUN THROUGH THE DROPPED FILES + AJAX UPLOAD
    let tamanho = e.dataTransfer.files.length;
    let image_id_multplie = $('[name="ORDER[ARQUIVO1]"]').data('id'); // pegando esse número só para saber de qual veiculo estamos tratando

    for (var i = 1; i < e.dataTransfer.files.length; i++) {
        var xhr = new XMLHttpRequest(),
            data = new FormData();
        data.append('file-upload', e.dataTransfer.files[i]);
        xhr.open('POST', root + 'vehicles/save_image_multiple/' + image_id_multplie + '/' + i, true);
        xhr.onload = function (e) {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {

                } else {
                    // ERROR - Do something
                    // console.error(xhr.statusText);
                    alert("Upload error!");
                }
            }
        };
        xhr.onerror = function (e) {
            // ERROR - Do something
            // console.error(xhr.statusText);
            alert("Upload error!");
        };
        xhr.send(data);
    }
});

});

0 个答案:

没有答案
相关问题