javascript - 如何在 NodeJS 中删除事件监听器?
问题描述
我无法弄清楚这应该如何实现。每次我尝试时,它要么抱怨 removeEventListener 不是函数,要么抱怨其他一些随机错误。目前,这是在将数据块写入文件的情况下使用的,我需要偶尔使用排水器,然后删除排水器侦听器。我会得到错误
(node:8996) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 drain listeners added to [WriteStream]. Use emitter.setMaxListeners() to increase limit
然后最终耗尽了 JavaScript 的堆内存。我试图不增加允许的内存,但是如果这是我能做的唯一有用的事情,那么让我知道
我当前的代码看起来像这样,因为我不知道自己在做什么
fileWrite: async function AddressesToFile(chunk, fileS, done) {
console.log("Writing chunk in");
var writeCon = true;
//Writes the chunk into the output filestream
for (var i=0;i<chunk.length;i++) {
//Split the address line along the custom separators used
for (var ii=0;ii<chunk[i].split("(|S|)").length;ii++) {
if (ii == 0) {
//Add quotes around the first element (the original address string)
writeCon = fileS.write('"' + chunk[i].split("(|S|)")[ii] + '",');
} else if (ii == chunk[i].split("(|S|)").length-1) {
//Add a newline after each element
writeCon = fileS.write(chunk[i].split("(|S|)")[ii] + '\n');
} else {
//Add a comma after last element
writeCon = fileS.write(chunk[i].split("(|S|)")[ii] + ',');
}
}
}
if (!writeCon) {
fileS.once('drain', (drain) => fileS.removeEventListeners('drain', (drain) => console.log('Drained')));
}
//If we have sent the last chunk through, close the file stream
/*if (done) {
fileS.end();
extractDone = true;
}*/
},
原始数据以未清理地址的形式读取,我的代码将它们转换为字符串,其中包含未清理地址、邮政编码、找到的组件以及附加到它的一系列组件,然后将其写入目标文件
解决方案
推荐阅读
- c# - 不支持使用 System.Text.JSON 的接口类型的反序列化
- c++ - MacOS 上 Visual Studio Code 中的 C++ - std::make_unique
- python - 在 XML 文档中创建尽可能多的标签的 GREL 行的 Python 方法是什么?
- python - 删除后无法使用 MySQL/InnoDB 提交?
- c++ - 为什么不能在可变参数模板中将尾随模板参数指定为默认值?
- java - JUnit5:使多个测试对同一个对象进行操作
- python - 如何使用此代码在 pygame 中制作圣诞树?
- arrays - Google 表格的 COUNTIF 不能使用布尔值
- docker - Windows 10 家庭版上的 Minikube 问题
- java - 如何使用java在放心框架中传递大而复杂的xml正文