node.js背压和排放事件。我遇到内存泄漏警告
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js背压和排放事件。我遇到内存泄漏警告相关的知识,希望对你有一定的参考价值。
我目前正在亲自研究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
[有人知道如何编写汲取事件处理程序吗?谢谢。
答案
我认为以下是处理背压和排放事件的正确方法。
const rs = getReadableStreamSomehow();
const ws = getWritableStreamSomehow();
rs.on("data", function (data) {
if (!ws.write(data)) {
rs.pause();
ws.once("drain", function () {
rs.resume();
});
}
});
正确吗?
如果不正确,请发表评论。
以上是关于node.js背压和排放事件。我遇到内存泄漏警告的主要内容,如果未能解决你的问题,请参考以下文章
Node.js + Socket.io 内存泄漏和最大监听器