當前位置:
首頁 > 最新 > Node可寫的流可用於輸出數據到底層

Node可寫的流可用於輸出數據到底層

如何想使用一個流介面I/O輸出數據。那麼用繼承stream.Writable並且實現一個_write方法向底層源數據發送數據來解決。許多第三方模塊提供網路服務和資料庫流介面。跟隨這一趨勢是有利的,因為它允許你的類使用管道的API,這有助於保持碼塊的復用和解耦。你可能會只是希望簡單實現一個可寫流作為管道鏈,或者實現不支持的I/O資源。在一般情況下,所有你需要做的是正確地從繼承stream.Writable——更多的推薦使用的方式,然後添加一個_write方法。所有的_write方法需要做的就是當數據被寫入時調用提供的回調。下面的代碼顯示方法的參數和樣本_write的實現

chunk參數是Buffer的一個實例或者是一個字元串。customWriteOperation是你的類中自定義的寫操作。它可以是非同步的,這樣的話回調會在過後安全地調用。如果發生了錯誤,要調用Node內部代碼提供的回調。一個_write方法提供了一個回調,你可以在寫完成時調用。這允許_write是非同步的。在這裡customWriteOperation方法被簡單地使用——在真正實現時,將執行基本I/O。這可能涉及通過套接字訪問資料庫,或寫入文件。提供給回調的第一個參數應該是一個錯誤,允許在需要時_write傳遞錯誤。

節點的stream.Writable基類並不需要知道數據如何寫,它只需要關心操作是成功還是失敗。錯誤可以通過傳遞一個錯誤的對象回調報告調用者。這將導致錯誤的事件被觸發。請記住這些數據流的基類,所以你通常應該添加一個監聽器捕獲錯誤並優雅地處理錯誤。接下來的例子顯示完整地實現了stream.Writable類

使用通常的繼承模式來創建一個新的可寫流類。使用ANSI編碼序列來給數據塊添加綠色文本的標識。當文本已經被發送到標準輸出流時執行回調。使用管道從輸入到輸出來把文本轉換位綠色文本。這個簡短的示例將輸入的文本顏色變為綠色。它可以通過node writable.js來運行,或將文本通過管道來使用,如cat file.txt|node writable.js。編碼參數只有當被用來代替緩衝區字元串時才會生效。字元串可以通過設置decodeStrings為false來使用,在實例化可寫流時傳遞。流並不總是處理緩衝區對象,因為一些實現了優化處理字元串,因此在某些情況下直接處理字元串可以更有效。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 行家匯 的精彩文章:

JSON行解析器和使用objectMode配置的流用法
在Node中使用RabbitMQ和Redis
Node使用對象組織管理事件名稱
Node如何創建一個基於EventEmitter的自定義類
Node的創建和管理模塊

TAG:行家匯 |

您可能感興趣

Mt.Gox索賠新系統可用,客戶可提出索賠
Nvidia顯示設置不可用,您當前未使用連接到NVIDIA GPU的顯示器的解決方法
以尖端可信計算技術驅動,Taxa Network帶來包容可用可開發的DApp服務
真要掉隊了,蘋果面臨無基帶可用,明年或無法推出5G iphone
Veeam打造超可用數據平台
iPhone後台不運行APP,手機可用內存還不到6%!
Netflix有哪些來之不易的系統高可用經驗?
fact後面可用which引導從句嗎?——當然可以
Android 版 Steam 串流應用上架,手機/平板/電視都可用
超可用性彰顯數據價值 VeeamON Forum智能數據管理高峰論壇將在上海舉辦
蘋果獲得可摺疊屏專利:可用在iPhone或其他設備上
谷歌將Android P帶到可穿戴設備 華為Watch2可用
未來iPhone可用於監測狐臭 不讓體味影響你的生活
Pray復出加入KT:LCK賽區是否真已無人可用了?
哪種特徵分析法適合你的任務?Ian Goodfellow提出顯著性映射的可用性測試
YOLOv3目標檢測有了TensorFlow實現,可用自己的數據來訓練
Rambus與NVIDIA續簽專利授權許可:可用高速內存主控,費用保密……
不買新iPhone也可用5G網路,中國移動這個方案你怎麼看?
用不起陳可辛的iPhone X 你也可用這些裝備提升手機照效果
蘋果AirPods被指可用於竊聽