1. 程式人生 > >利用async和await異步操作解決node.js裏面fs模塊異步讀寫,同步結果的問題

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

地獄 一個 cnblogs resolv 我們 瀏覽器 問題 分開 不容易

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 解決多層嵌套,回調地獄 // 解決異步請求,同步結果的問題

 

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