[英]Error when interconnecting ipcRenderer and ipcMain in electron
我已經在電子中配置了cli角,並且在其中有一個鏈接可以執行ipcRenderer和ipcMain互通的功能:
的HTML:
<a (click)="check()"> click </a>
零件:
constructor(private _e: ElectronService) { }
check () {
this._e.ipcRenderer.send ('conn', 'round');
this._e.ipcRenderer.on ('conn-st', (event, args) => {
console.log (args);
});
}
main.js(電子):
ipcMain.on ('conn', function (event, args) {
event.sender.send ('conn-st', 'trip');
});
問題在於,單擊一次時,它會執行一次,但是再次單擊時,它會連續執行3、4、5等操作。
並在達到11時拋出此錯誤:
(node:23006) Error: Possible EventEmitter memory leak detected. 11 conn-st listeners added. Use emitter.setMaxListeners() to increase limit
如何結束ipcRenderer和ipcMain之間的連接?
該錯誤消息僅表示,已創建11個“套接字”的偵聽器(如UNIX中的偵聽器)。 每個偵聽器都創建一個唯一的ID,該ID在創建偵聽器時返回。 基於此,可以這樣刪除一個特定的偵聽器:
// Create a listener.
var myListener = function (event, args) {}
ipcRenderer.on("channel", myListener);
// Delete only this one by its ID:
ipcRenderer.removeListener("channel", myListener);
但是,您也可以刪除為套接字創建的所有偵聽器,如下所示:
// 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");
電子文檔(尤其是此處 )也對此進行了介紹。
根據電子文檔文檔 ,可接受的答案不再是正確的。 偵聽器是一個函數,應按如下所示將其刪除。
// Create a listener
let listener = (event, args) => {}
ipcRenderer.on("channel", listener );
//Delete the listener
ipcRenderer.removeListener("parse-cm-request", listener);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.