图像的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);
});
答案 0 :(得分:0)
您提出的请求是异步的。这意味着在执行过程中,您的代码将继续进行,因此,当您尝试将其返回值分配给变量时,该变量尚不存在。它返回的是一个promise。
所以您需要执行以下操作:
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
答案 1 :(得分:0)
您有2个选择
使用回调:这种方式只能在回调函数中访问结果
使用同步请求:不建议这样做,这样您的主线程(浏览器页面)将冻结,直到您的请求完成为止
var request = new XMLHttpRequest();
request.open('GET', '/bar/foo.txt', false); // `false` makes the request synchronous
request.send(null);
if (request.status === 200) {
console.log(request.responseText);
}