簡體   English   中英

讓 js function 等待事件監聽器

[英]make js function wait for eventlistener

我嘗試上傳一些文件。 我每次只需要上傳一個,因為我在一個 32b 的樹莓派上運行網絡服務器,它最多有 2gb 的帖子。

有誰知道如何讓 forloop 等到每個文件都被上傳。 我想上傳大量文件。 因此,如果它嘗試同時上傳 1000 個文件,它很可能會崩潰。 如何讓文件等到我收到事件管理器的響應

function uploadFiles(){
        var userfiles = _("fileg").files;
        for(var i = 0; i < userfiles.length; i++){
            var formdata = new FormData();
            var file = userfiles[i];
            formdata.append("file", file);
            formdata.append("username", "test");
            var ajax = new XMLHttpRequest();
            ajax.upload.addEventListener("progress", progressHandler, false);
            ajax.addEventListener("load", completeHandler, false);
            ajax.addEventListener("error", errorHandler, false);
            ajax.addEventListener("abort", abortHandler, false);
            ajax.open("POST", "parser.php");
            ajax.send(formdata);
            valu = i + 1;
            _("status2").innerHTML = valu+"/"+userfiles.length;
        }
    }

我相信使用for循環和 Fetch 很容易做到這一點:

const uploadFiles = async () => {
    for (let file of  _("fileg").files) {
        const formdata = new FormData();
        formdata.append("file", file);
        formdata.append("username", "test");

        await fetch('parser.php', {
            method: 'post',
            body: formdata
        });
    }
}

請求將按順序一一提出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM