<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
        主站蜘蛛池模板: 亚洲视频免费一区| 亚洲欧洲国产精品你懂的| 亚洲乱码一二三四区国产| 久久久久久成人毛片免费看| 亚洲毛片αv无线播放一区| 成年免费a级毛片| 亚洲日韩中文字幕日韩在线| 色视频在线观看免费| 亚洲日韩中文在线精品第一| 国产日韩久久免费影院| 国产亚洲综合色就色| 国产91色综合久久免费分享| 亚洲人成亚洲精品| 8x8x华人永久免费视频| 亚洲国产亚洲片在线观看播放| 美女网站免费福利视频| 亚洲久热无码av中文字幕| 国产免费69成人精品视频| 又粗又长又爽又长黄免费视频| 亚洲国产中文v高清在线观看| 久久久精品国产亚洲成人满18免费网站 | 国产免费久久精品丫丫| 亚洲欧洲国产成人综合在线观看| 中国国产高清免费av片| 久久久亚洲欧洲日产国码二区| 亚洲视频免费在线看| 亚洲AV成人一区二区三区观看 | 男女免费观看在线爽爽爽视频| 亚洲明星合成图综合区在线| 国产精品视频免费一区二区| 高潮毛片无遮挡高清免费| 国产亚洲精品不卡在线| 永久在线免费观看| 亚洲国产精品无码久久98| 伊人久久综在合线亚洲91| 精品久久久久成人码免费动漫 | 久久久久亚洲av无码尤物| 最近中文字幕免费完整| 亚洲成AV人片在WWW| 伊人久久亚洲综合| 国国内清清草原免费视频99 |