我有一个ReadableStream和一个WriteableStream。在实例化两个对象之后,我将可读流传输到可写流中。
+=
是否有办法在不引用可读流的情况下取消管道流。
通常的方法是
const readable = getReadableStreamSomehow();
const writeable = new WriteableStreamObject();
readable.pipe(writeable);
但是在这种情况下,我不再能够访问可读对象,只能访问可写对象。我想按照
的方式做点什么 readable.unpipe(writeable);
我需要这样做的原因是,在某些时候我不再需要可写入,我需要将它从流中断开。我可以丢弃所有引用,以便它被垃圾收集,但没有删除流将很乐意继续消耗内存(流永远不会结束),因为流仍然保留引用,该对象永远不会被垃圾收集。
答案 0 :(得分:2)
一个可写的人真的不知道有什么东西是用它来管道的。它只知道有些东西经常写入它。它是可读的,可以跟踪它传送到的一个或多个其他流。因此,没有内置的方法:
writeable.disconnectAllStreams()
因为可写的实际上并不知道是谁用它来管道。
您可以将可读流作为参考放在可写的:
上const readable = getReadableStreamSomehow();
const writeable = new WriteableStreamObject();
// store readable on the writable so we can unpipe it later
writable.pipeStream = readable;
// set the pipe
readable.pipe(writeable);
然后,你可以做:
// get the readable and unpipe it
writable.pipeStream.unpipe(writable);