最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決vue中reader.onload讀取文件的異步問題

 更新時間:2022年10月09日 15:48:05   作者:十二點的洛杉磯  
這篇文章主要介紹了解決vue中reader.onload讀取文件的異步問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

reader.onload讀取文件的異步問題

問題

用element上傳文件組件上傳文件,然后在前端讀取,由于reader.onload讀取文件是異步的會造成return回去的數據無法被獲取

export function import_excel_to_json(file){
    let jsonData = {}
    let reader = new FileReader()
    reader.readAsArrayBuffer(file)
    reader.onload =  function () {
        let buffer = reader.result
        let bytes = new Uint8Array(buffer)
        let length = bytes.byteLength
        let binary = ''
        for (let i = 0; i < length; i++) {
            binary += String.fromCharCode(bytes[i])
        }
        let XLSX = require('xlsx')
        let wb = XLSX.read(binary, {
            type: 'binary'
        })
        wb.SheetNames.map(item=>{
          jsonData[item] = XLSX.utils.sheet_to_json(wb.Sheets[item])
          jsonData[item].shift()
        })
        return jsonData
    }
  })
}

在外部調用該函數:

let data = this.import_excel_to_json(File)

data獲取不到返回值

解決

用Promise進行處理

export function import_excel_to_json(file){
  return new Promise(function (resolve, reject) {
    let jsonData = {}
    let reader = new FileReader()
    reader.readAsArrayBuffer(file)
    reader.onload =  function () {
        let buffer = reader.result
        let bytes = new Uint8Array(buffer)
        let length = bytes.byteLength
        let binary = ''
        for (let i = 0; i < length; i++) {
            binary += String.fromCharCode(bytes[i])
        }
        let XLSX = require('xlsx')
        let wb = XLSX.read(binary, {
            type: 'binary'
        })
        wb.SheetNames.map(item=>{
          jsonData[item] = XLSX.utils.sheet_to_json(wb.Sheets[item])
          jsonData[item].shift()
        })
        resolve(jsonData);
    }
  })
}

reader.onloadend異步返回結果問題

原本想直接return,但因為read.onloadend是異步任務,無法獲取到。

因此可以使要讀取文件的函數返回值為一個promise,這樣便可解決這一問題。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • vue3+vite實現(xiàn)在線預覽pdf功能

    vue3+vite實現(xiàn)在線預覽pdf功能

    這篇文章主要為大家詳細介紹了如何通過vue3和vite實現(xiàn)在線預覽pdf功能,文中的示例代碼簡潔易懂,具有一定的借鑒價值,感興趣的小伙伴可以學習一下
    2023-10-10
  • vue高德地圖之玩轉周邊

    vue高德地圖之玩轉周邊

    vue高德地圖,帶你玩轉周邊,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Vue3中emits與attrs的區(qū)別分析

    Vue3中emits與attrs的區(qū)別分析

    這篇文章主要給大家介紹了關于Vue3中emits與attrs區(qū)別的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友可以參考下
    2021-10-10
  • vue3?Table分頁保留選中狀態(tài)代碼示例

    vue3?Table分頁保留選中狀態(tài)代碼示例

    這篇文章主要給大家介紹了關于vue3?Table分頁保留選中狀態(tài)的相關資料,vue table組件是一個非常方便的表格組件,它可以幫助我們實現(xiàn)分頁和選中功能,需要的朋友可以參考下
    2023-08-08
  • vue3手動刪除keepAlive緩存的方法

    vue3手動刪除keepAlive緩存的方法

    當我們未設置keepAlive的最大緩存數時,當緩存組件太多,會導致內存溢出,本文給大家介紹了vue3手動刪除keepAlive緩存的方法,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • vue中el-table多層級嵌套的具體實現(xiàn)

    vue中el-table多層級嵌套的具體實現(xiàn)

    本文主要介紹了vue中el-table多層級嵌套的具體實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-10-10
  • vue簡易記事本開發(fā)詳解

    vue簡易記事本開發(fā)詳解

    這篇文章主要為大家詳細介紹了vue簡易記事本的開發(fā)過程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 基于vue-cli 打包時抽離項目相關配置文件詳解

    基于vue-cli 打包時抽離項目相關配置文件詳解

    下面小編就為大家分享一篇基于vue-cli 打包時抽離項目相關配置文件詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 在vant中如何使用dialog彈窗

    在vant中如何使用dialog彈窗

    這篇文章主要介紹了在vant中如何使用dialog彈窗,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue中的install方法使用

    vue中的install方法使用

    這篇文章主要介紹了vue中的install方法使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

马龙县| 英德市| 洪湖市| 辽阳市| 罗江县| 奎屯市| 嘉兴市| 大余县| 梁平县| 安岳县| 安龙县| 宾阳县| 上杭县| 台州市| 霍邱县| 茌平县| 水富县| 阳信县| 固镇县| 苏州市| 高雄县| 顺平县| 云林县| 上林县| 大连市| 巴彦淖尔市| 山东| 铜川市| 南江县| 张家川| 凤凰县| 九龙坡区| 珲春市| 罗甸县| 资中县| 台山市| 长兴县| 清徐县| 通江县| 东乌珠穆沁旗| 宝坻区|