3
我試圖找出爲什麼.unpipe
調用是無操作如果流已.pause
之後被管道:unpipe的NodeJS如何正確地流
b.on('data', console.log.bind(console, "on b -> "));
c.on('data', console.log.bind(console, "on c -> "));
a.pause();
a.pipe(b);
a.pipe(c);
a.resume();
a.unpipe(b);
a.unpipe(c);
a.write("foo");
打印:
//on b -> foo
//on c -> foo
這似乎是因爲撥打.pause()
。但重要的是保持流暫停'直到所有流都被管道。 如何以優雅的方式解決此問題?
有機會將源流上的'data'事件偵聽器附加爲目標流的寫入函數。
b.on('data', console.log.bind(console, "on b -> "));
c.on('data', console.log.bind(console, "on c -> "));
writeToB = b.write.bind(b);
writeToC = c.write.bind(c);
a.pause();
a.on('data', writeToB);
a.on('data', writeToC);
a.resume();
a.removeListener('data',writeToB);
a.removeListener('data',writeToC);
a.write("foo");
但是這種方法感覺像壞主意。