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 是"只听一次"。根据具体的通信需求选择即可。

相关推荐
橙子家15 分钟前
浏览器缓存之【身份与会话管理】:Cookies 和 Private state tokens
前端
最新资讯动态1 小时前
HDC 2026 | 对话鲸鸿动能:存量时代,品牌如何夺回营销“主动权”?
前端
最新资讯动态1 小时前
游戏出海,从产品走向体系
前端
最新资讯动态1 小时前
20人团队跑出百万DAU、大厂也来抢量:谁在鸿蒙生态跑出加速度
前端
最新资讯动态1 小时前
千万开发者背后,鸿蒙商业化的B面
前端
爱勇宝3 小时前
AI 时代:智商决定起点,情商决定走多远
前端·ai编程
kyriewen4 小时前
用了半年 Claude Code 后,我尝试关掉它写了一周代码——结果比想象中严重
前端·javascript·ai编程
IT_陈寒4 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端
徐小夕5 小时前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
一份执念5 小时前
uni-app 小程序分包限制处理与主包体积优化实战
前端·微信小程序