fs是node.js拿來針對檔案的操作的模組,內涵一系列的方法可以滿足對檔案操作的需求
再等等的例子上就可以帶到同步與非同步。
過往在寫PHP的時候他是同步的語言,什麼是同步呢?
就是程式會由上往下,一行一行執行,如果遇到一個需求是需要讀取一陣子的,他就會卡在那邊一陣子,直到完成了,才會繼續再往下走下去。
至於非同步我目前還沒了解的很深刻,在往後看有沒有機會再來用我理解的方式好好敘述一篇。
我們來簡單測試一下非同步跟同步的呈現吧~
創一個檔案名為
wow.txt
在裡頭寫上
我是wow.txt檔案
接著回到我的js檔案裡面寫
//匯入fs模組
const fs = require('fs');
//呼叫readFile()方法讀取檔案
fs.readFile('wow.txt','utf8',function(err,wowData){
console.log(err);//沒有錯誤顯示null
console.log('-----');//純粹分隔線
console.log(wowData);
});
console.log('非同步讀取檔案')
//err代表列印失敗後的結果,wowData代表列印成功後的結果
如果以同步語言的方式下去思考的話,他會先卡在fs.readFile
結束之後才去往下。
但在node.js裡面並不是這樣
其輸出結果
可以發現程式是繼續往下跑,取最下方的console,執行完當前需求之後,會再去處理非同步的部分
當然也fs也可以去選擇同步任務的方法
//同步讀取檔案
const fs = require('fs');
const str = fs.readFileSync('wow.txt','utf8');
console.log(str);
console.log('同步讀取檔案');
其輸出結果
從這邊就可以感受到,今天如果是非同步執行的狀況下,很多瀏覽體驗優秀很多,如果有一個任務是需要等10秒才能繼續下去,那消費者感受就會比較糟糕,透過非同步的方式
可以達到良好的體驗。