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 内存泄漏和最大监听器

Electron App 中的事件发射器内存泄漏

Node JS forEach内存泄漏问题

没有 v8-profiler 的 Node.js 内存泄漏搜索

node.js内存泄漏分析二

Node.js内存泄漏的原因竟然是……?