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存储在一个数组中,那么我该怎么做呢?
答案 0 :(得分:0)
Slingshot&#39; s uploader.send()
是一个异步过程。
因此,我认为它只是一个classic async task misunderstanding。
即。在console.log(images)
回调执行之前调用uploader.send
。
此外,您将通过在回调函数中使用i
变量来体验范围问题。执行时,i
将具有不同的值。通常它已经等于files.length
。这意味着您的所有回调都将写在同一个数组images[files.length]
上。