下面这两个意义一样嘛?
stream.pipe(...)
stream.pipe(...)
跟
stream.pipe(...).pipe(...)
stream.pipe(...) 跟 stream 本身是不是同一个东西?
但Object.is(stream,stream.pipe(...)) 的时候返回的是 false
那两者的含义这样吗?
请参考这个 https://github.com/substack/stream-handbook#pipe
readable.pipe(destination[, options])
一个readable的流才会有pipe方法可以调用,pipe方法接收一个可写入的流对象作为pipe的目标
就是在一个可读的流和可写的流之间建立一个通道,把readable中的数据写入destination中,pipe执行完后返回destination指定的流对象
stream.pipe(...) 返回跟 stream 就不是同一个对象
stream.pipe(destinationA)
stream.pipe(destinationB)
同一个stream通过pipe写入到指定的可写流destinationA/destinationB中
stream.pipe(destinationA).pipe(destinationB)
stream流写入destinationA,如果stream.pipe(destinationA)
返回的流同时是可读的,那么可以链式调用pipe方法将流写入destinationB
pipe方法能够链式调用的一个前提是pipe返回的流是可读的
例如
var r = fs.createReadStream('file.txt');
var z = zlib.createGzip();
var w = fs.createWriteStream('file.txt.gz');
r.pipe(z).pipe(w);
zlib数据流即是个可写入流同时也是个可读取流