<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        淺析Node.js中StreamAPI的使用_node.js

        來源:懂視網 責編:小采 時間:2020-11-27 21:44:42
        文檔

        淺析Node.js中StreamAPI的使用_node.js

        淺析Node.js中StreamAPI的使用_node.js:本文由淺入深給大家介紹node.js stream api,具體詳情請看下文吧。 基本介紹 在 Node.js 中,讀取文件的方式有兩種,一種是用 fs.readFile ,另外一種是利用 fs.createReadStream 來讀取。 fs.readFile 對于每個 Node.js 使用者來說最熟
        推薦度:
        導讀淺析Node.js中StreamAPI的使用_node.js:本文由淺入深給大家介紹node.js stream api,具體詳情請看下文吧。 基本介紹 在 Node.js 中,讀取文件的方式有兩種,一種是用 fs.readFile ,另外一種是利用 fs.createReadStream 來讀取。 fs.readFile 對于每個 Node.js 使用者來說最熟

        本文由淺入深給大家介紹node.js stream api,具體詳情請看下文吧。

        基本介紹

        在 Node.js 中,讀取文件的方式有兩種,一種是用 fs.readFile ,另外一種是利用 fs.createReadStream 來讀取。

        fs.readFile 對于每個 Node.js 使用者來說最熟悉不過了,簡單易懂,很好上手。但它的缺點是會先將數據全部讀入內存,一旦遇到大文件的時候,這種方式讀取的效率就非常低下了。

        而 fs.createReadStream 則是通過 Stream 來讀取數據,它會把文件(數據)分割成小塊,然后觸發一些特定的事件,我們可以監聽這些事件,編寫特定的處理函數。這種方式相對上面來說,并不好上手,但它效率非常高。

        事實上, Stream 在 Node.js 中并非僅僅用在文件處理上,其他地方也可以看到它的身影,如 process.stdin/stdout , http , tcp sockets , zlib , crypto 等都有用到。

        本文是我學習 Node.js 中的 Stream API 中的一點總結,希望對大家有用。

        特點

        基于事件通訊

        可以通過 pipe 來連接流

        種類

        Readable Stream 可讀數據流

        Writeable Stream 可寫數據流

        Duplex Stream 雙向數據流,可以同時讀和寫

        Transform Stream 轉換數據流,可讀可寫,同時可以轉換(處理)數據

        事件

        可讀數據流的事件

        readable 數據向外流時觸發

        data 對于那些沒有顯式暫停的數據流,添加data事件監聽函數,會將數據流切換到流動態,盡快向外提供數據

        end 讀取完數據時觸發。注意不能和 writeableStream.end() 混淆,writeableStream 并沒有 end 事件,只有 .end() 方法

        close 數據源關閉時觸發

        error 讀取數據發生錯誤時觸發

        可寫數據流的事件

        drain writable.write(chunk) 返回 false 之后,緩存全部寫入完成,可以重新寫入時就會觸發

        finish 調用 .end 方法時,所有緩存的數據釋放后觸發,類似于可讀數據流中的 end 事件,表示寫入過程結束

        pipe 作為 pipe 目標時觸發

        unpipe 作為 unpipe 目標時觸發

        error 寫入數據發生錯誤時觸發

        狀態

        可讀數據流有兩種狀態: 流動態 和 暫停態 ,改變數據流狀態的方法如下:

        暫停態 -> 流動態

        添加 data 事件的監聽函數

        調用 resume 方法

        調用 pipe 方法

        注意:如果轉為流動態時,沒有 data 事件的監聽函數,也沒有 pipe 方法的目的地,那么數據將遺失。

        流動態 -> 暫停態

        不存在 pipe 方法的目的地時,調用 pause 方法

        存在 pipe 方法的目的地時,移除所有 data 事件的監聽函數,并且調用 unpipe 方法,移除所有 pipe 方法的目的地

        注意:只移除 data 事件的監聽函數,并不會自動引發數據流進入「暫停態」。另外,存在 pipe 方法的目的地時,調用 pause 方法,并不能保證數據流總是處于暫停態,一旦那些目的地發出數據請求,數據流有可能會繼續提供數據。

        用法

        讀寫文件

        更多用法

        可以參考一下 https://github.com/jeresig/node-stream-playground ,進去示例網站之后直接點 add stream 就能看到結果了。

        常見坑

        用 rs.pipe(ws) 的方式來寫文件并不是把 rs 的內容 append 到 ws 后面,而是直接用 rs 的內容覆蓋 ws 原有的內容

        已結束/關閉的流不能重復使用,必須重新創建數據流

        pipe 方法返回的是目標數據流,如 a.pipe(b) 返回的是 b,因此監聽事件的時候請注意你監聽的對象是否正確

        如果你要監聽多個數據流,同時你又使用了 pipe 方法來串聯數據流的話,你就要寫成:

        data

        常用類庫

        event-stream 用起來有函數式編程的感覺,個人比較喜歡

        awesome-nodejs#streams 由于其他 stream 庫我都沒用過,所以有需求的就直接看這里吧

        以上內容是小編給大家介紹的Node.js 中 Stream API 的使用,希望大家喜歡。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        淺析Node.js中StreamAPI的使用_node.js

        淺析Node.js中StreamAPI的使用_node.js:本文由淺入深給大家介紹node.js stream api,具體詳情請看下文吧。 基本介紹 在 Node.js 中,讀取文件的方式有兩種,一種是用 fs.readFile ,另外一種是利用 fs.createReadStream 來讀取。 fs.readFile 對于每個 Node.js 使用者來說最熟
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久av无码专区亚洲av桃花岛| 日韩一区二区免费视频| JLZZJLZZ亚洲乱熟无码| 亚洲a∨无码一区二区| 在线观看免费成人| 亚洲欧美日韩国产成人| 在线看片免费不卡人成视频| 亚洲小说图片视频| 国产啪精品视频网免费| 亚洲人成网站日本片| 亚洲精品私拍国产福利在线| 亚洲色大网站WWW永久网站| 免费毛片a在线观看67194| 亚洲一级毛片在线播放| 免费看韩国黄a片在线观看| 亚洲无码一区二区三区| 国产免费黄色大片| 国产VA免费精品高清在线| 免费看大美女大黄大色| 国产亚洲综合精品一区二区三区| 国产免费av片在线无码免费看| 另类小说亚洲色图| 亚洲人成色7777在线观看| 无码人妻精品中文字幕免费| 久久精品国产亚洲av麻豆图片| 日韩高清在线免费观看| 美女无遮挡拍拍拍免费视频| 久久青青草原亚洲av无码app| 成人女人A级毛片免费软件| 豆国产96在线|亚洲| 亚洲国产精品无码av| 成人国产精品免费视频| 亚洲视频免费在线播放| 成在线人永久免费视频播放| 你是我的城池营垒免费观看完整版 | 亚洲色偷偷偷网站色偷一区| 24小时日本在线www免费的| 有色视频在线观看免费高清在线直播| 亚洲精品无码高潮喷水在线| j8又粗又长又硬又爽免费视频| 亚洲国产a∨无码中文777|