【node】同步讀取readFileSync和異步讀取readFile的區別案例


先結論:異步讀取文件的時候由操作系統在后台進行讀取,不會阻礙下面的代碼執行。同步讀取的時候會阻礙下面的代碼執行。

再案例:

test.js

var fs = require('fs');                //獲取fs模塊
console.log('start async read');        //異步讀取開始
fs.readFile('test2.js',function(error,date){    //讀取文件,回調函數第一個參數表示錯誤信息,第二個參數為讀取的文本內容
    if(error){
        console.log(error);
    }else{
        console.log('end async read');    //異步讀取結束
    }
});


console.log('start sync read'); //同步讀取開始
var date = fs.readFileSync('log.txt','utf-8');
console.log('end sync read');    //同步讀取結束

結果:

看出是按這個順序執行的:異步讀取開始--------------->同步讀取開始--------------------->同步讀取結束---------------->異步讀取結束

異步讀取沒有結束,同步讀取就完成了。

結論:異步讀取沒有阻塞下面代碼的執行。

 

調換一下代碼就更明顯了

var fs = require('fs');                //獲取fs模塊

console.log('start sync read'); //同步讀取開始
var date = fs.readFileSync('log.txt','utf-8');
console.log('end sync read');    //同步讀取結束


console.log('start async read');        //異步讀取開始
fs.readFile('test2.js',function(error,date){    //讀取文件,回調函數第一個參數表示錯誤信息,第二個參數為讀取的文本內容
    if(error){
        console.log(error);
    }else{
        console.log('end async read');    //異步讀取結束
    }
});

結果:

看出是按這個順序執行的:同步讀取開始--------------->同步讀取結束--------------------->異步讀取開始---------------->異步讀取結束

結論:同步讀取阻塞下面代碼執行。

 


免責聲明!

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



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