泵是一個小節點模塊,如果其中一個關閉,則將管道串在一起並破壞所有這些模塊。
npm install pump
使用標準source.pipe(dest)
時,如果DEST發射關閉或錯誤,則不會破壞源。您也無法提供回調來告訴當時管道何時完成。
泵為您做這兩件事
只需通過您要一起管道泵送的流並添加可選回調
var pump = require ( 'pump' )
var fs = require ( 'fs' )
var source = fs . createReadStream ( '/dev/random' )
var dest = fs . createWriteStream ( '/dev/null' )
pump ( source , dest , function ( err ) {
console . log ( 'pipe finished' , err )
} )
setTimeout ( function ( ) {
dest . destroy ( ) // when dest is closed pump will destroy source
} , 1000 )
您也可以使用泵一起將兩個以上的流提供
var transform = someTransformStream ( )
pump ( source , transform , anotherTransform , dest , function ( err ) {
console . log ( 'pipe finished' , err )
} )
如果source
, transform
, anotherTransform
或dest
將關閉所有這些,則將被摧毀。
類似地,與stream.pipe()
, pump()
返回最後一個流,因此您可以做:
return pump(s1, s2) // returns s2
請注意, pump
將錯誤處理程序附加到流中以進行內部錯誤處理,因此,如果在上述情況下s2
發出錯誤,則如果您不收聽,它將不會觸發proccess.on('uncaughtException')
。
如果要返回將S1和S2都結合到單個流的流中,則使用Pumpify。
麻省理工學院
pump
是密西西比州流媒體集合的一部分,其中包含類似於此模塊的更有用的流模塊。
作為Tidelift訂閱的一部分可用。
泵的維護者和其他成千上萬的軟件包正在與Tidelift合作,為您用於構建應用程序的開源依賴關係提供商業支持和維護。節省時間,降低風險並改善代碼健康,同時支付您使用的確切依賴項的維護者。了解更多。