Node中同步与异步的方式读取文件
場景
Node.js最大的特點就是異步式I/O(或者非阻塞I/O)與事件緊密結合的編程模式。這種模式與傳統(tǒng)的同步式I/O線性的編程思路有很大的不同,因為控制流很大程度上要靠事件和回調(diào)函數(shù)來組織,一個邏輯要拆分為若干個單元。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現(xiàn)
在Node中如何使用異步的方式讀取一個文件,新建readFile.js
var fs = require('fs'); fs.readFile('badao.txt','utf-8',function (err,data) {if(err){console.log(err);}else{console.log(data);} }); console.log('讀取文件結束');然后在同級目錄下新建文件badao.txt用來作為讀取的內(nèi)容。
運行如下命令
node readFile.js運行的結果如下
?
Node也提供了同步讀取文件的API
新建文件readFileSync.js
var fs = require('fs');var data = fs.readFileSync('badao.txt','utf-8');console.log(data);console.log('讀取結束');然后運行如下命令
node readFileSync.js運行結果如下
?
兩次運行的結果不同。
同步讀取文件的方式比較好理解,將文件名作為參數(shù)傳入,fs.readFileSync函數(shù),堵塞等待讀取完成后將文件的內(nèi)容作為函數(shù)的返回值
賦給data變量。然后控制臺輸出data的值,最后輸出結束。
異步式IO是通過回調(diào)函數(shù)來實現(xiàn)的。fs.readFile接收了三個參數(shù)。第三個是匿名的回調(diào)函數(shù)。
fs.readFile調(diào)用時所作的工作就是將異步式IO請求發(fā)送給了操作系統(tǒng),然后李繼峰返回并執(zhí)行后面的語句,
執(zhí)行完以后進入事件循環(huán)監(jiān)聽事件。當fs接收到IO請求完成的事件時,事件循環(huán)會主動調(diào)用回調(diào)函數(shù)以完成后續(xù)工作。因此會先看到輸出結束,
再看到文件內(nèi)容。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Node中同步与异步的方式读取文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java对象之间相同属性的赋值
- 下一篇: Java中list.forEach方法的