1. 程式人生 > 其它 >2021-01-26

2021-01-26

技術標籤:前端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'));
         };
      });
    },