Javascript 获取FileReader()的结果对象

Javascript 获取FileReader()的结果对象,javascript,jquery,html,filereader,Javascript,Jquery,Html,Filereader,是否有任何方法可以在不通过函数的情况下获取FileReader()的结果对象 我在下面制作了一个示例代码: HTML 请注意,这应该在最后出现在这应该在第一个出现之前出现 而根据脚本,如果从上到下读取,则应该首先出现必须出现在之前,而应该最后出现 这就是我应用我的结论的地方,reader.onload…行始终被跳过,并在脚本结束之前运行 这就是我的困境开始的地方,我需要找到一个替代代码,在那里我不必使用reader.onload上的函数。简单地分配reader.onload=reader.re

是否有任何方法可以在不通过函数的情况下获取FileReader()的结果对象

我在下面制作了一个示例代码:

HTML

请注意,
这应该在最后出现
这应该在第一个出现之前出现

而根据脚本,如果从上到下读取,则
应该首先出现
必须出现在
之前,而
应该最后出现

这就是我应用我的结论的地方,
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);