Javascript 文件读取器-返回文件?

Javascript 文件读取器-返回文件?,javascript,Javascript,这是我的文件阅读器: p.read = function(file) { var fileReader = new FileReader(); fileReader.readAsDataURL(file); fileReader.onload = function(e) { return e.target.result; } } 但是什么也没有归还?知道为什么吗?恐怕您无法从回调函数返回它 试着用另一个函数来分隔它 希望我能帮上忙这是一个异步函

这是我的文件阅读器:

p.read = function(file) {
    var fileReader = new FileReader();
    fileReader.readAsDataURL(file);
    fileReader.onload = function(e) {

        return e.target.result;
    }
}

但是什么也没有归还?知道为什么吗?

恐怕您无法从回调函数返回它

试着用另一个函数来分隔它


希望我能帮上忙

这是一个异步函数。这意味着如果你这样做:

p.read = function(file) {
    var fileReader = new FileReader();
    fileReader.readAsDataURL(file);
    console.log('a');
    fileReader.onload = function(e) {
        console.log('b');
        return e.target.result;
    }
}
以及:

你会得到

hello
c
a
b
因为JavaScript是异步的。非常好的b/c,就像这样,您的代码是非阻塞的:在读取大文件时执行某些操作非常容易

在您的示例中,您必须执行以下操作:

p.read = function(file, callback) {
    var fileReader = new FileReader();
    fileReader.readAsDataURL(file);
    fileReader.onload = function(e) {
        callback(e.target.result);
    }
}
而要运行:

p.read('file', function(content) {
   console.log(content);
});

您尝试过fileReader.result吗?您无法从异步回调函数返回任何内容。再看看@Bergi,我不知道我怎么会看不到回报。出于某种原因,我认为他们正在打印值,并且在函数返回时遇到了问题。该返回嵌套在另一个函数中,该函数将在将来的某个时间执行。它对外部功能没有影响。
p.read('file', function(content) {
   console.log(content);
});