多个文件上传网址与edgee:弹弓

时间:2016-07-03 07:56:35

标签: javascript meteor

var images = [];
let uploader = new Slingshot.Upload("articles"); 

// file input
let files = document.getElementById("someId").files; 

for (let i = 0; i < files.length; i++) { 
    uploader.send(files[i], function (error, downloadUrl) { 
        if (!error) { 
            //save all download urls in an array 
            images[i] = downloadUrl; 
        } 
    }); 
}
console.log(images); 

当我使用下载网址填充上面的图像数组时,它是空的。 send()块后,任何变量值都会丢失。我想将所有下载URL存储在一个数组中,那么我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

Slingshot&#39; s uploader.send()是一个异步过程。

因此,我认为它只是一个classic async task misunderstanding

即。在console.log(images)回调执行之前调用uploader.send

此外,您将通过在回调函数中使用i变量来体验范围问题。执行时,i将具有不同的值。通常它已经等于files.length。这意味着您的所有回调都将写在同一个数组images[files.length]上。