stream.pipe 怎么理解?

下面这两个意义一样嘛?

stream.pipe...
stream.pipe...

stream.pipe....pipe...

stream.pipe… 跟 stream 本身是不是同一个东西?

但Object.isstream,stream.pipe… 的时候返回的是 false

那两者的含义这样吗?

readable.pipedestination[, options]

一个readable的流才会有pipe方法可以调用,pipe方法接收一个可写入的流对象作为pipe的目标
就是在一个可读的流和可写的流之间建立一个通道,把readable中的数据写入destination中,pipe执行完后返回destination指定的流对象

stream.pipe… 返回跟 stream 就不是同一个对象

stream.pipedestinationA
stream.pipedestinationB

同一个stream通过pipe写入到指定的可写流destinationA/destinationB中

stream.pipedestinationA.pipedestinationB

stream流写入destinationA,如果stream.pipedestinationA返回的流同时是可读的,那么可以链式调用pipe方法将流写入destinationB
pipe方法能够链式调用的一个前提是pipe返回的流是可读的

例如

var r = fs.createReadStreamfile.txt;
var z = zlib.createGzip;
var w = fs.createWriteStreamfile.txt.gz;
r.pipez.pipew;

zlib数据流即是个可写入流同时也是个可读取流

请参考这个 https://github.com/substack/stream-handbook#pipe

发表评论

电子邮件地址不会被公开。 必填项已用*标注