首页 > 解决方案 > 如何将回调分配给JS中的变量

问题描述

图像的 base64 打印到控制台,但我不知道如何将此值分配给变量。我已经四处寻找了一段时间,似乎无法找到一个简单、简洁的答案。我对JS真的很陌生。

function toDataURL(url, callback) {
    let xhr = new XMLHttpRequest();
    xhr.onload = function () {
        let reader = new FileReader();
        reader.onloadend = function () {
            callback(reader.result);
        };
        reader.readAsDataURL(xhr.response);
    };
    xhr.open('GET', url);
    xhr.responseType = 'blob';
    xhr.send();
    //return xhr.responseText;
}


toDataURL(lpif_anchor_tag_href, function (dataUrl) {
    console.log(dataUrl);
});

toDataURL(lpif_anchor_tag_href_two, function (dataUrl) {
    console.log(dataUrl);
});

标签: javascriptcallbackxmlhttprequestbase64

解决方案


您发出的请求是异步的。这意味着在执行时,您的代码会继续运行,因此当您尝试将其返回值分配给变量时,它还不存在。它返回的是一个承诺

所以你需要做这样的事情:

var promise1 = new Promise(function(resolve, reject) {
  resolve('Success!');
});

promise1.then(function(value) {
  console.log(value);
  // expected output: "Success!"
});

这里还有另一个针对您的用例类型的详细答案: https ://stackoverflow.com/a/47445455/5471957


推荐阅读