利用async和await異步操作解決node.js里面fs模塊異步讀寫,同步結果的問題


async await 解決異步問題,這兩個關鍵字是es7提出的,所以測試,node和瀏覽器版本提高一些

async await 操作基於promise實現的


async await這兩個關鍵字是一起使用,分開使用會報錯


await 后面只能跟promise對象

 

不熟悉的promise異步操作的朋友,去看看我promise那邊文章

Promise 解決多層嵌套,回調地獄
什么叫回調地獄
寫一個實例,就是惡心的多層欠嵌套
function a(){

    function b(){

        function c(){

    }

   }

}    
 
        

這樣的代碼看着就不容易維護,性能底下


下面我們看看fs模塊解決異步請求,同步結果的問題

//es7

let fs=require('fs');
function read(url) {
    //new Promise 需要傳入一個executor 執行器
    //executor需要傳入兩個函數 resolve reject
    return new Promise((resolve,reject)=>{
        //異步讀取文件
        fs.readFile(url,'utf8',function (err,data) {
            if(err){
                reject(err)
            }else{
                resolve(data);
            }
        })
    })
};

//async await 解決異步問題,基於promise
//async await這兩個關鍵字一起使用
//await 后面只能跟promise對象
async function getData(){
    try{
        //Promise.all()並發讀取
        let result =await Promise.all([read('name.txt'),read('age.txt')]);
        console.log(result);
    }catch (e){
        console.log(e);
    }
}
getData();

//Promise 解決多層嵌套,回調地獄
// 解決異步請求,同步結果的問題
 
        

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM