首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript承诺使用FileReader()

Javascript承诺使用FileReader()
EN

Stack Overflow用户
提问于 2015-12-28 22:58:27
回答 7查看 52.5K关注 0票数 35

我有以下HTML代码:

代码语言:javascript
复制
<input type='file' multiple>

下面是我的JS代码:

代码语言:javascript
复制
var inputFiles = document.getElementsByTagName("input")[0];
inputFiles.onchange = function(){
    var fr = new FileReader();
    for(var i = 0; i < inputFiles.files.length; i++){
        fr.onload = function(){
            console.log(i) // Prints "0, 3, 2, 1" in case of 4 chosen files
        }
    }
    fr.readAsDataURL(inputFiles.files[i]);
}

所以我的问题是,我如何才能使这个循环同步?,,意思是,首先等待文件加载完成,然后再进入下一个文件。有人告诉我使用JS Promises。但是我不能去上班。这是我正在尝试的:

代码语言:javascript
复制
var inputFiles = document.getElementsByTagName("input")[0];
inputFiles.onchange = function(){
    for(var i = 0; i < inputFiles.files.length; i++){
        var fr = new FileReader();
        var test = new Promise(function(resolve, reject){
            console.log(i) // Prints 0, 1, 2, 3 just as expected
            resolve(fr.readAsDataURL(inputFiles.files[i]));
        });
        test.then(function(){
            fr.onload = function(){
                console.log(i); // Prints only 3
            }
        });
    };
}

先谢谢你...

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34495796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档