window.electronAPI.send、on 和 once

在 Electron 中,window.electronAPI.sendononce 是渲染进程与主进程进行 IPC(进程间通信)时常用的方法,它们的区别主要体现在功能用途调用时机上:

1. window.electronAPI.send

  • 作用 :从渲染进程主进程发送消息(单向发送,不需要立即等待回复)。
  • 特点 : - 是主动发送消息的方法,用于触发主进程中对应的事件监听。 - 通常需要配合主进程的 ipcMain.on 来接收消息。
  • 示例
js 复制代码
// 渲染进程中发送消息 
window.electronAPI.send('login-request', { username: 'admin', password: '123' });
主进程中用 `ipcMain.on` 接收:
// 主进程中接收消息 
ipcMain.on('login-request', (event, data) => { console.log('收到登录请求:', data); }); 

2. window.electronAPI.on

  • 作用 :在渲染进程持续监听主进程发送的特定事件(可以多次触发)。
  • 特点
    • 一旦注册,会一直生效,只要主进程发送该事件,渲染进程就会触发回调。
    • 适用于需要多次接收同一类型消息的场景(如实时数据更新)。
    • 示例
js 复制代码
// 渲染进程中持续监听主进程的 'user-info' 事件
window.electronAPI.on('user-info', (userData) => { console.log('收到用户信息:', userData); localStorage.setItem('user', JSON.stringify(userData)); }); 
  • 主进程可以多次发送该事件,渲染进程都会收到。

3. window.electronAPI.once

  • 作用 :在渲染进程只监听一次主进程发送的特定事件(触发一次后自动取消监听)。
  • 特点: 回调函数只会执行一次,后续主进程再发送该事件时,不会再触发。
  • 适用于只需要处理一次的场景(如初始化数据、一次性通知)。
  • 示例
javascript 复制代码
// 渲染进程中只监听一次 'login-success' 事件
window.electronAPI.once('login-success', () => { console.log('登录成功(只提示一次)'); alert('欢迎回来!'); });

即使主进程多次发送 login-success 事件,上面的回调也只会执行一次。

方法 用途 触发次数 适用场景
send 渲染进程向主进程发送消息 主动调用一次 提交数据、触发主进程操作
on 渲染进程持续监听主进程消息 多次(持续生效) 实时更新、重复事件处理
once 渲染进程只监听一次主进程消息 一次(自动取消) 初始化、一次性通知

简单说: send 是"发消息",on 是"一直听",once 是"只听一次"。根据具体的通信需求选择即可。

相关推荐
GISer_Jing1 分钟前
SSE Conf大会分享——大模型驱动的智能 可视分析与故事叙述
前端·人工智能·信息可视化
Lovely Ruby2 分钟前
前端er Go-Frame 的学习笔记:实现 to-do 功能(一)
前端·学习·golang
fruge3 分钟前
Vue3 与 Vue2 核心差异:响应式原理、生命周期及迁移方案
前端·javascript·vue.js
zlpzlpzyd9 分钟前
vue.js 3项目整合vue-router 4的问题
前端·javascript·vue.js
crary,记忆9 分钟前
Angular.json中的commonChunk 的作用
前端·javascript·学习·angular.js
Highcharts.js10 分钟前
Highcharts 仪表板 CSS 样式定制使用说明
前端·css·仪表板·highcharts·css 样式
好奇的候选人面向对象15 分钟前
大屏ECharts适配完整方案
前端·javascript·echarts