我正在尝试为我的博客系统制作一个文件上传器,它只会让用户将文件放入其中,然后它会自动将它们上传到服务器。奇怪的是(对我来说),console.log
在它被填充之前输出 dataArray ,而在超时后调用它会正确输出它。
例如,如果我在放置区放置 4 个文件,我会得到:
[]
[file1, file2, file3, file4]
然后我在不上传/刷新的情况下再删除 4 个文件,我得到:
[file1, file2, file3, file4]
[file1, file2, file3, file4, file5, file6, file7, file8]
所以我的脚本由于某种原因异步工作?有人可以告诉我我在这里做错了什么吗?
var dataArray = [];
$('.dropArea').bind(
{
drop: function(e)
{
e.stopPropagation();
e.preventDefault();
var files = e.dataTransfer.files;
$.each(files, function(index, file)
{
var fileReader = new FileReader();
fileReader.onload = (function(file)
{
return function(e)
{
var image = this.result;
dataArray.push({
name : file.name,
value: image
});
}
})(files[index]);
fileReader.readAsDataURL(file);
});
console.log(dataArray);
setTimeout(function() { console.log(dataArray) }, 1000);
},
});