2021-01-26
阿新 • • 發佈:2021-01-27
技術標籤:前端vue.jsjavascript
解決無法將回調函式中的值賦給定義的變數
本人目標:需要將通過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')); }; }); },