首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子ipcRenderer与ipcMain互连时的误差

电子ipcRenderer与ipcMain互连时的误差
EN

Stack Overflow用户
提问于 2017-03-28 15:33:06
回答 2查看 3.1K关注 0票数 0

我在电子中配置了cli角,并且我有一个链接,它执行一个将ipcRenderer和ipcMain结合在一起的函数:

html:

代码语言:javascript
复制
<a (click)="check()"> click </a>

构成部分:

代码语言:javascript
复制
constructor(private _e: ElectronService) { }

check () {
   this._e.ipcRenderer.send ('conn', 'round');
   this._e.ipcRenderer.on ('conn-st', (event, args) => {
      console.log (args);
   });
}

main.js (电子):

代码语言:javascript
复制
ipcMain.on ('conn', function (event, args) {
  event.sender.send ('conn-st', 'trip');
});

问题是,当你点击一次,你做了一次,但当你再次点击它做3,然后4,5,等等。

并在达到11时抛出此错误:

代码语言:javascript
复制
(node:23006) Error: Possible EventEmitter memory leak detected. 11 conn-st listeners added. Use emitter.setMaxListeners() to increase limit

如何结束ipcRenderer和ipcMain之间的连接?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-29 13:22:47

该错误消息只说明,已创建了11个“套接字”侦听器(如UNIX中的监听器)。每个侦听器都创建一个惟一的ID,该ID在创建侦听器时返回。在此基础上,可以这样删除一个特定的侦听器:

代码语言:javascript
复制
// Create a listener.
var myListener = function (event, args) {} 
ipcRenderer.on("channel", myListener);

// Delete only this one by its ID:
ipcRenderer.removeListener("channel", myListener);

但是,您也可以删除为套接字创建的所有侦听器,如下所示:

代码语言:javascript
复制
// Create a few listeners.
var myListener0 = function (event, args) {};
var myListener1 = function (event, args) {};
var myListener2 = function (event, args) {};
var myListener3 = function (event, args) {};

//
ipcRenderer.on("channel", myListener0);
ipcRenderer.on("channel", myListener1);
ipcRenderer.on("channel", myListener2);
ipcRenderer.on("channel", myListener3);

// Delete all listeners for socket "channel".
ipcRenderer.removeAllListeners("channel");

这也包括在电子文档,特别是这里

票数 6
EN

Stack Overflow用户

发布于 2019-07-02 03:49:58

根据电子文档文档,所接受的答案是不正确的。侦听器是一个函数,应该删除如下所示。

代码语言:javascript
复制
// Create a listener
let listener = (event, args) => {}
ipcRenderer.on("channel", listener );

//Delete the listener
ipcRenderer.removeListener("parse-cm-request", listener);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43073820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档