泵是一个小节点模块,如果其中一个关闭,则将管道串在一起并破坏所有这些模块。
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合作,为您用于构建应用程序的开源依赖关系提供商业支持和维护。节省时间,降低风险并改善代码健康,同时支付您使用的确切依赖项的维护者。了解更多。