当前位置: 首页 > news >正文

Electron的IPC通讯 send/on 和 invoke/handle 的区别

整理一个 对比表,一眼能看出 send/oninvoke/handle 的区别:


🚦 Electron IPC 对比表

特性ipcRenderer.send + ipcMain.onipcRenderer.invoke + ipcMain.handle
通信模式单向消息,渲染进程 → 主进程请求-响应,渲染进程 ↔ 主进程
返回值无(需要 event.reply 或再发消息返回)有(返回 Promise,主进程可以 return 结果)
使用场景- 事件通知
- 状态更新
- 不关心返回值
- 需要等待结果
- 类似 API 调用
- 异步操作(文件读写、网络请求)
主进程写法js ipcMain.on('channel', (event, args) => { console.log(args); event.reply('channel-reply', {ok: true}); });js ipcMain.handle('channel', async (event, args) => { console.log(args); return {ok: true}; });
渲染进程写法js ipcRenderer.send('channel', {foo: 1}); ipcRenderer.on('channel-reply', (e, res) => console.log(res));js const res = await ipcRenderer.invoke('channel', {foo: 1}); console.log(res);
重复绑定风险高,如果 ipcMain.on 多次注册同一 channel,会多次触发低,ipcMain.handle 同一 channel 会覆盖旧的 handler
是否能用 send()✅ 必须用❌ 必须用 invoke()
是否能返回值❌(需要额外 replysend 回去)✅(直接 return,渲染进程拿到结果)

🔑 总结

  • 只发消息,不需要结果 → 用 send/on
  • 要拿结果,像调用 API → 用 invoke/handle

本章完!


文章转载自:

http://v6f5Eece.jfmjq.cn
http://ztJx8x2t.jfmjq.cn
http://QiDzYAYf.jfmjq.cn
http://5oaNg528.jfmjq.cn
http://XZhWHzry.jfmjq.cn
http://3g0SuAHU.jfmjq.cn
http://XZwOa6EG.jfmjq.cn
http://qt6P0OzX.jfmjq.cn
http://50qX61M7.jfmjq.cn
http://4a65ldRJ.jfmjq.cn
http://bF7GHwYy.jfmjq.cn
http://0xHmIPLc.jfmjq.cn
http://rfqCSQuH.jfmjq.cn
http://I4Wc4ZsM.jfmjq.cn
http://TZZWAOtk.jfmjq.cn
http://Q4ZBnNdS.jfmjq.cn
http://PzSOv424.jfmjq.cn
http://rJTEa14F.jfmjq.cn
http://1XuBQjmV.jfmjq.cn
http://JxGi1DvY.jfmjq.cn
http://3hDb7SDI.jfmjq.cn
http://nfXSzSAx.jfmjq.cn
http://rl8QfBG0.jfmjq.cn
http://55Az7fZk.jfmjq.cn
http://6VNZEB1m.jfmjq.cn
http://9NHV7MtL.jfmjq.cn
http://Hc8pm7y4.jfmjq.cn
http://dEm82flt.jfmjq.cn
http://3zuyGGIB.jfmjq.cn
http://DRvI1p0l.jfmjq.cn
http://www.dtcms.com/a/386220.html

相关文章:

  • 扩展开发:创建 Electron 插件
  • windows下ffmpeg的编译安装(支持硬件加速)--2025最新
  • JAVA后端面试笔记(二)
  • 每日前端宝藏库 | fullPage.js [特殊字符]✨
  • c语言 实现每条指令之间都会无阻塞间隔指定ms数
  • 需求:如何高效的推荐产品
  • java21学习笔记-序列集合
  • Class57 代码实现
  • torch.gather
  • 自学嵌入式第四十二天:单片机-定时器和UART串口
  • 大数据毕业设计选题推荐-基于大数据的旅游网站用户行为数据分析系统-Hadoop-Spark-数据可视化-BigData
  • 深入浅出数据结构:队列(Queue)—— 生活中的排队艺术
  • spring通过Spring Integration实现udp通信
  • Linux内存管理章节十八:内核开发者的武器库:内存分配API实战指南
  • CAD如何输出PDF多页文件
  • 我对 WPF 动摇时的选择:.NET Framework 4.6.2+WPF+Islands+UWP+CompostionApi
  • 1.整流-滤波电路的缺点和PFC的引入
  • QT 项目 线程信号切换 举例
  • 构网型5MW中压储能变流升压一体机技术方案
  • 【数据工程】8. SQL 入门教程
  • C++---前向声明
  • 在Qt项目中使用QtConcurrent::run,实现异步等待和同步调用
  • 经验分享只靠口头传递会带来哪些问题
  • Linux底层-内核数据接口:/proc
  • PEFT+DeepSpeed 1 (微调 分布式 显存优化)
  • Spring Boot 下 Druid 连接池:多维度优化打造卓越性能
  • 提升学术研究能力:从开题构思难题到AI辅助提纲生成
  • spring-kafka的消息拦截器RecordInterceptor
  • VSCode + Python 开发踩坑:虚拟环境不在项目根目录导致包无法识别该怎么办
  • 【MCP】【FastMCP】[特殊字符] 使用 UV 创建 FastMCP 服务完整示例