【发布时间】:2019-12-16 12:19:13
【问题描述】:
在我的主机应用程序中,我有一个按钮,单击该按钮时,会将数据与数据一起发送到我的 Angular 应用程序。像这样:
<button (click)="onClick()">Send Some Data</button>
组件:
onClick() {
ipcRenderer.send("data-bridge",{name: 'John Smith', address: 'Main Street', date: new Date() );
}
在我的 Angular 应用程序中,我收到如下数据:
import { ElectronService } from 'ngx-electron';
export class AppComponent {
constructor( private electronService: ElectronService) {}
ngOnInit() {
if (this.electronService.ipcRenderer) {
this.electronService.ipcRenderer.on('data-bridge', (event, data) => {
console.log('got something', data)
})
}
}
}
我注意到的行为是,当我单击按钮 x 次时,我将看到警报 x 次:
- 1 次点击 --> 1 次提醒
- 2 次点击 --> 2 次提醒
- 3 次点击 --> 3 次警报.. 等等等等
所以这显然向我表明存在内存泄漏。解决方案很简单,在接收到事件后移除事件监听器。
我试过做类似的事情:
this.electronService.ipcRenderer.on('data-bridge', (event, data) => {
alert('got something');
this.electronService.ipcRenderer.removeAllListeners()
}
但多次警报仍然发生在单击一次。
我不能使用 ipcRenderer.once 方法,因为我需要监听器保持打开状态,只是没有多个相同的监听器。如何删除 ipcRenderer.on('data-bridge', ...) 事件侦听器,以便每次单击按钮时,我将只有一个事件侦听器?
【问题讨论】:
-
请分享
this.electronService.ipcRenderer的代码 -
已添加,它只是电子相关 api github.com/ThorstenHans/ngx-electron 的角度包装器
标签: javascript node.js angular electron ipcrenderer