Javascript 如何将回调函数与readAsDataURL()一起使用

Javascript 如何将回调函数与readAsDataURL()一起使用,javascript,jquery,callback,filereader,Javascript,Jquery,Callback,Filereader,我已经阅读了这篇文章和很多关于如何使用回调函数的例子,但是当我试图复制我在例子中看到的东西时,我无法正确地得到它 我正在尝试将pdf上传到输入,将上传的数据转换为二进制字符串,然后以某种方式使用该字符串 问题是我无法使用字符串部分等待转换为二进制字符串部分 下面是我的JSFIDLE,其中有一个问题示例: 这就是我期望它的工作方式: 1用户上传pdf 2次用户单击获取二进制字符串 3 convert函数进行转换,完成后调用handleResult 4 handleResult使用二进制字符串 实际

我已经阅读了这篇文章和很多关于如何使用回调函数的例子,但是当我试图复制我在例子中看到的东西时,我无法正确地得到它

我正在尝试将pdf上传到输入,将上传的数据转换为二进制字符串,然后以某种方式使用该字符串

问题是我无法使用字符串部分等待转换为二进制字符串部分

下面是我的JSFIDLE,其中有一个问题示例:

这就是我期望它的工作方式:

1用户上传pdf

2次用户单击获取二进制字符串

3 convert函数进行转换,完成后调用handleResult

4 handleResult使用二进制字符串

实际发生的情况:

1用户上传pdf

2次用户单击获取二进制字符串

3 convert函数在完成转换之前立即调用handleResult


4 HandlerResult尝试使用二进制字符串,Javascript是异步的,因此在读取文件之前会触发回调

您需要在来自FileReader的事件中触发回调。请查看文档,以获得一个很好的示例-

像这样的东西应该可以-

function getBase64(file, callback) {
    var reader = new FileReader();
    reader.onload = function(event) {
        callback(event.target.result);
    };
    reader.readAsDataURL(file);
 } 
function getBase64(file, callback) {
    var reader = new FileReader();
    reader.onload = function(event) {
        callback(event.target.result);
    };
    reader.readAsDataURL(file);
 }