Javascript 获取FileReader()的结果对象
是否有任何方法可以在不通过函数的情况下获取FileReader()的结果对象 我在下面制作了一个示例代码: HTML 请注意,Javascript 获取FileReader()的结果对象,javascript,jquery,html,filereader,Javascript,Jquery,Html,Filereader,是否有任何方法可以在不通过函数的情况下获取FileReader()的结果对象 我在下面制作了一个示例代码: HTML 请注意,这应该在最后出现在这应该在第一个出现之前出现 而根据脚本,如果从上到下读取,则应该首先出现必须出现在之前,而应该最后出现 这就是我应用我的结论的地方,reader.onload…行始终被跳过,并在脚本结束之前运行 这就是我的困境开始的地方,我需要找到一个替代代码,在那里我不必使用reader.onload上的函数。简单地分配reader.onload=reader.re
这应该在最后出现
在这应该在第一个出现之前出现
而根据脚本,如果从上到下读取,则应该首先出现
必须出现在之前,而应该最后出现
这就是我应用我的结论的地方,reader.onload…
行始终被跳过,并在脚本结束之前运行
这就是我的困境开始的地方,我需要找到一个替代代码,在那里我不必使用reader.onload
上的函数。简单地分配reader.onload=reader.result
不起作用
使用此当前代码,第一次运行脚本时返回code
作为lorem ipsum
,第二次运行时返回data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/7QC+…
。但是我需要code
成为data:image/jpeg;base64、/9j/4AAQSkZJRgABAgAAAQABAAD/7QC+…
在第一次执行脚本之后立即执行
对不起,我解释得很混乱。我不太喜欢用英语表达自己,因为它不是我的母语。谢谢文件读取器是异步的,因此在等待读取文件时,逻辑执行将继续通过加载事件处理程序。这意味着(与任何异步处理程序一样),所有依赖于异步事件的代码都必须放在事件处理程序中。试试这个:
var reader = new FileReader();
reader.onload = function() {
code = reader.result;
$("div").append("<label>this should appear first: " + code + "</label> <br />");
$("div").append("<label> this should appear last: " + code + "</label> <br />");
};
reader.readAsDataURL(upload);
var reader=newfilereader();
reader.onload=函数(){
代码=reader.result;
$(“div”).append(“应该首先出现:“+code+”
”);
$(“div”).append(“这应该出现在最后:“+code+”
”);
};
reader.readAsDataURL(上传);
是否有任何方法可以获取FileReader()的结果对象
没有通过一个函数
否。FileReader()
是异步的。您可以使用Promise
实现预期结果
var code=“lorem ipsum”;
$(“输入[type='file']”)。更改(函数(){
var upload=this.files[0];
var p=新承诺(功能(解决){
var reader=new FileReader();
reader.onload=函数(){
代码=reader.result;
//将'div'作为resolve'Promise'传递给'。然后()`
解析($(“div”).append(“这应该首先出现:”
+代码+“
”);
};
reader.readAsDataURL(上传);
});
p、 然后(功能(元素){
elem.append(“这应该最后出现:”
+代码+“
”);
})
});代码>
var code = "lorem ipsum";
$("input[type='file']").change(function() {
var upload = this.files[0];
var reader = new FileReader();
reader.onload = function() {
code = reader.result;
$("div").append("<label>this should appear first: " + code + "</label> <br />");
};
reader.readAsDataURL(upload);
$("div").append("<label> this should appear last: " + code + "</label> <br />");
});
this should appear last: asd
this should appear first: data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD/7QC+...
var reader = new FileReader();
reader.onload = function() {
code = reader.result;
$("div").append("<label>this should appear first: " + code + "</label> <br />");
$("div").append("<label> this should appear last: " + code + "</label> <br />");
};
reader.readAsDataURL(upload);