В настоящее время я сам изучаю node.js противодавление.
Я не собираюсь использовать .pipe()
или .pipeline()
, потому что хочу понять, что такое противодавление и дренаж .
но я не знаю, как написать соответствующий обработчик стока.
давайте посмотрим на приведенный ниже код.
"use strict";
const rs = getReadableStreamSomehow();
const ws = getWritableStreamSomehow();
rs.on("data", function handler(data) {
if (!ws.write(data)) {
ws.once("drain", handler);
}
});
похоже, что в приведенном выше исходном коде есть некоторые проблема. потому что я столкнулся с предупреждением утечки памяти из консоли.
(node:29788) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 drain listeners added to [WriteStream]. Use emitter.setMaxListeners() to increase limit
Кто-нибудь знает, как написать обработчик событий стока?
Спасибо.