Electron 基础教程-6.4 IPC监听器

Managing Event Listeners

我们可能想要移除掉某个IPC监听器,IPC模块为异步和同步进程提供了相似的语法。如果想要移除主进程中的单个监听器,语法为:

ipcMain.removeListener(channel name, function)

类似地,在移除渲染进程的单个监听器:

ipcRenderer.removeListener(channel name, function)

其中,function引用到相应的on方法。

如果想移除某个channel所有的监听器,可以使用removeAllListeners方法,基本语法如下:

ipcMain.removeAllListeners(channel)

ipcRenderer.removeAllListeners(channel)

前两节的例子中,我们的两个监听器在内部定义了自己的函数。如果主进程想知道用户是否已经登录了系统,就需要如下框架:

function userDidLogin() {
  ipcRenderer.on('userLogin', this.handleLoginSuccess);
}

function userDidLogout() {
  ipcRenderer.removeListener('userLogin', this.handleLoginSuccess);
}

function handleLoginSuccess(event, args) {
  console.log('data', args.data);
}

应用可能通过用户登录状态来改变菜单或其他项目。对于这个例子,状态一旦改变,就没有必要继续监听事件了。Electron的IPC模块提供了一个移除监听器更实用的方法:

ipc.once(channel, listener)

这个方法对同步和异步方式都适用。它会监听特定channel,一旦受到相应事件,就会执行监听器的方法,然后移除这个监听器。


Summary

虽然IPC模块的方法数量不多(只有发送和接收方法)但这是Electron进程见协作的基石。你将使用IPC模块从渲染进程的用户活动来启动主进程的第三方Node库。下一章,我们将利用他们去处理Electron的对话模块。


猜你喜欢

转载自blog.csdn.net/HouszChina/article/details/79619478