electron 通信模式

electron 通信模式

  1. send/on 模型:
    • ipcMain.on: 这个方法用于监听来自渲染进程的消息。当渲染进程通过 ipcRenderer.send 发送特定的 channel 消息时,这个方法会被触发。
    • 在回调函数中,首先使用 findFn 函数根据 channel 查找相应的处理函数。
    • 然后调用这个处理函数,并传递参数 paramsevent。这个处理函数是异步的,使用 await 等待其结果。
    • 完成后,使用 event.returnValue 设置返回值,并通过 event.reply 发送回应到渲染进程。
    • 如果过程中出现错误,会捕获异常并记录日志。注释掉的代码显示,原本还可以通过 event.returnValueevent.reply 发送错误信息回渲染进程。
  2. invoke/handle 模型:
    • ipcMain.handle: 这个方法用于设置一个处理函数,当渲染进程通过 ipcRenderer.invoke 调用特定的 channel 时,这个方法会被触发。
    • 它的工作流程与 send/on 类似,但不同之处在于 invoke/handle 是基于Promise的,适用于异步操作。渲染进程可以等待 invoke 的结果。
    • 当处理函数执行完成后,其返回值会自动作为Promise的结果返回给调用方(渲染进程)。
    • 如果处理过程中抛出异常,同样会被捕获并记录,异常信息作为Promise的拒绝(reject)结果返回。