Node.js背压和排水事件.我遇到了内存泄漏警告



我目前正在研究节点.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

有没有人知道如何编写 drain 事件处理程序?
谢谢。

我认为以下是处理背压和排水事件的正确方法。

const rs = getReadableStreamSomehow();
const ws = getWritableStreamSomehow();
rs.on("data", function (data) {
if (!ws.write(data)) {
rs.pause();
ws.once("drain", function () {
rs.resume();
});
}
});

正确吗?

如果不正确,请发表评论。

最新更新