首页
/
每日頭條
/
圖文
/
scale一般用于開發什麼
scale一般用于開發什麼
更新时间:2026-07-30 04:43:28

前幾篇文章主要講了可讀流、可寫流以及pipe方法,這篇文章主要介紹一下Duplex流和Transform流!

Duplex流

這個流比較簡單,它主要繼承了可讀流Readable和可寫流Writable,并且沒有定義其他的API,如圖1所示:

scale一般用于開發什麼(作為前端你一定要搞清楚)1

圖1

也就是說它既可以當做可讀流使用也可以當做可寫流使用!

scale一般用于開發什麼(作為前端你一定要搞清楚)2

圖2

如圖2所示,readable讀入了5、4、3、2、1,writable1作為可寫流将它們依次消費,同時writable1也作為可讀流依次将10、9、8、7、6讀入,由writable2作為可寫流消費,這裡writable1和writable2都是Duplex流,所以Duplex流是可以代替readable和writable使用的!

Transform流

這個流主要繼承自Duplex流,所以它也可以同時當做可讀流和可寫流,通過參數自定義_transform方法和_flush方法,并且transform流自身實現了一個_write方法和_read方法,如圖3所示:

scale一般用于開發什麼(作為前端你一定要搞清楚)3

圖3

先看一個簡單的demo如下:

scale一般用于開發什麼(作為前端你一定要搞清楚)4

圖4

圖4中的transform流被當做了可寫流,并且在自定義的transform方法中可以消費上遊傳下來的數據,我們回想一下之前可讀流writable是在_write方法中消費數據的,那麼此處transform方法和_write方法是有什麼關聯嗎?

scale一般用于開發什麼(作為前端你一定要搞清楚)5

圖5

通過源碼,我們可以發現_write方法内部調用了transform方法,這樣就通了,如圖5所示!

Transform流核心能力是把處理之後的數據自動存入到自己的可讀流緩存區,此時就是自動将自己從可寫流轉别為可讀流,此處的玄機就在next方法!

scale一般用于開發什麼(作為前端你一定要搞清楚)6

圖6

如圖6,我們把之前的next方法再封裝一層,除了執行之前的next方法外,還把消費後的數據通過push方法存入自己的可讀流緩存區,此處Transform流即是一個可讀流也是一個可寫流!

scale一般用于開發什麼(作為前端你一定要搞清楚)7

圖7

如圖7中,我們再pipe一個可寫流,你會發現,第一次讀入的是0、1、2、4.....,在transform中處理一次(加一個‘1’字符串),此時最後的可寫流會消費上遊transform流傳下去的數據。

另外,當transform流作為可寫流時,消費完其可寫流緩存區的數據時會觸發一個prefinish事件,來通知用戶是否還需要額外向自己push數據(此處是把自己當做可讀流),如下圖所示:

scale一般用于開發什麼(作為前端你一定要搞清楚)8

圖8

從圖8中就可以看出來_flush方法的作用,可以額外追加數據,如下圖,最後額外追加了數據‘end’。

scale一般用于開發什麼(作為前端你一定要搞清楚)9

圖9

總結

這篇文章主要分析了Transform流的特點,它和Duplex流一樣,既能當做可讀流也能當做可寫流,不同的是前者可以自動将自己從可寫流轉化為可讀流,而後者不具備這樣的能力(當然可以自己在_write方法中開發這樣的邏輯)!前面還提到一個流PassThrough,其實它就是Transform流,隻是換了個名字而已!下一篇我們讨論一下如何寫gulp插件,它就是對Transform流的實際應用!

喜歡我的文章就關注我吧,有問題可以發表評論,我們一起學習,共同成長!

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
桂花終于要開了
桂花終于要開了
10月17日,記者途經龍隐路時聞到一陣陣熟悉的香味。原來是路邊的一些桂花樹開花了,吸引了許多市民駐足“聞香”。随後,記者在解放西路、中山中路附近王城景區、桂林園林植物園等桂花樹種植較為密集的地方都發現了初開的桂花。據悉,桂林市區的桂花一般在...
2026-07-30
如何成為淘寶美工高手
如何成為淘寶美工高手
如何成為淘寶美工高手?大家好,我是淘寶美工老申,擁有10餘年淘寶工作經驗和4年美工培訓授課經驗每天在今日頭條分享關于淘寶美工、電商、視覺營銷等工作經驗如果你對這個行業感興趣,記得關注分享,下面我們就來說一說關于如何成為淘寶美工高手?我們一起...
2026-07-30
阿迪走下神壇
阿迪走下神壇
一直以來,“洋貨”與“國貨”之間的鬥争似乎從未停止過,甚至在很長一段時間内,“洋貨”似乎在之前總是占據上風,似乎國外的牌子總是好的。但在近幾年的“洋貨”與“國貨”之争中,“國貨”開始逐漸占據上風。阿迪在華營收同比下跌28%,“洋貨”不香了?...
2026-07-30
文體旅遊消費熱潮
文體旅遊消費熱潮
文體旅遊消費熱潮?近日,由浙江省商務廳等5部門聯合主辦的“浙裡來消費•2022金秋購物節”在杭州上城區湖濱步行街啟幕,我來為大家科普一下關于文體旅遊消費熱潮?下面希望有你要的答案,我們一起來看看吧!文體旅遊消費熱潮近日,由浙江省商務廳等5部...
2026-07-30
全屋定制要選什麼樣的闆材
全屋定制要選什麼樣的闆材
(1)材質介紹:烤漆闆材是屬于是木工材料的一種。主要是以中纖維密度闆或者顆粒闆作為基礎闆材,然後表面經過六至九次的打磨處理,做到表面光滑,再刷上底漆、經過烘幹、抛光(三底、二面、一光)再高溫烤制而成。對基礎底材要素嚴格,密度要細膩,均勻。闆...
2026-07-30
Copyright 2023-2026 - www.tftnews.com All Rights Reserved