在Electron中的通信中,我们经常会用到ipcRender.invoke和ipvRender.send
接下来简要说明下这两个方法的区别
-
ipcMain.on(channel, listener)
- 这是 Electron 的主进程(main process)监听来自渲染进程(renderer process)的消息的方式。
- 当渲染进程通过
ipcRenderer.send
或ipcRenderer.sendSync
发送消息时,主进程可以使用ipcMain.on
来监听并处理这些消息。 listener
是一个回调函数,当收到匹配channel
的消息时,这个函数会被调用。- 这种方式是异步的,主进程不会等待渲染进程的响应。
-
ipcMain.handle(channel, listener)
ipcMain.handle
是 Electron 5.0.0 之后引入的新特性。- 它允许主进程注册一个处理函数来响应来自渲染进程的同步消息请求。
- 当渲染进程使用
ipcRenderer.invoke
发送一个同步消息请求时,主进程可以使用ipcMain.handle
来处理这个请求,并返回一个响应。 listener
是一个处理函数,当收到匹配channel
的同步消息请求时,这个函数会被调用。- 与
ipcMain.on
不同,ipcMain.handle
是同步的,主进程会等待渲染进程的响应。
总结:
ipcMain.on
主要用于处理渲染进程发送的异步消息。ipcMain.handle
主要用于处理渲染进程发送的同步消息请求,并返回响应。