javascript - 如何将回调分配给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);
});
解决方案
您发出的请求是异步的。这意味着在执行时,您的代码会继续运行,因此当您尝试将其返回值分配给变量时,它还不存在。它返回的是一个承诺。
所以你需要做这样的事情:
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