Насос - это небольшой узел модуля, который соединяет потоковые потоки и разрушает их, если один из них закрывается.
npm install pump
При использовании Standard source.pipe(dest)
источник не будет уничтожен, если DEST издает закрытие или ошибку. Вы также не можете предоставить обратный вызов, чтобы сказать, когда закончится Pipe.
Насос делает эти две вещи для вас
Просто пропустите потоки, которые вы хотите, чтобы передать, чтобы накачать и добавить дополнительный обратный вызов
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
является частью коллекции утилиты Mississippi Stream, которая включает в себя более полезные потоковые модули, аналогичные этой.
Доступно как часть подписки Tidelift.
Содействия насосу и тысячи других пакетов работают с Tidelift для обеспечения коммерческой поддержки и технического обслуживания для зависимостей с открытым исходным кодом, которые вы используете для создания ваших приложений. Сэкономьте время, снижайте риск и улучшайте здоровье кода, одновременно выплачивая сопровождающих точных зависимостей, которые вы используете. Узнать больше.