Я пытаюсь выяснить, почему .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()
звонок. Но важно, чтобы поток был приостановлен до тех пор, пока все потоки не будут переданы. Как я могу решить эту проблему элегантным способом?
Существует возможность для подключения прослушивателя событий «данных» к источнику потока в качестве функции записи целевого потока.
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");
, но этот подход кажется плохим.