解决无法将回调函数中的值赋给定义的变量
本人目标:需要将通过bold转成的base64给自己所定义的变量赋值(说白了就是回调函数之外获取base64)
// 回调中base64 赋值 定义的变量 ,无法在回调之外获取变量
var reader = new window.FileReader();
reader.readAsDataURL(bold);
reader.onloadend = function() {
var base64=reader.result.split(',')[1];
}
此处的问题:
1.为了一个base64一直在回调内部掉函数。(代码不是很易懂)
2.当逻辑需要多个bold同时转base64,向后台传送一个base64的list。(显然有点恶心)
解决办法:
Promise 对象
个人理解:是一个能接受异步的消息,并获取异步结果(以下为Promise详细介绍地址)
详细地址:https://www.runoob.com/w3cnote/javascript-promise-object.html
使用Promise实现bold转base64
blobToBase64(blob) {
return new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.onload = (e) => {
resolve(e.target.result.split(',')[1]);
};
// readAsDataURL
fileReader.readAsDataURL(blob);
fileReader.onerror = () => {
reject(new Error('blobToBase64 error'));
};
});
},