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); 当我用下载urls填充上面的图像数组时,它是空的。在send()块之后,任何变量值都会丢失。我想将所有的下载urls存储在一个数组中,那么我该怎么做呢?
发布于 2016-07-12 13:14:51
Slingshot的uploader.send()是一个异步进程。
因此,在我看来,它只是一个classic async task misunderstanding。
也就是说,在执行console.log(images)回调之前,会调用console.log(images)。
此外,在回调函数中使用i变量会遇到作用域问题。当它执行时,i将有一个不同的值。通常情况下,它已经等于files.length。这意味着所有的回调都将写入相同的数组项images[files.length]。
https://stackoverflow.com/questions/38167887
复制相似问题