本文详解如何在 Electron 应用中通过 IPC 与 contextBridge 实现跨进程异步通知,解决 .then() 无效的根本原因------主进程未返回 Promise、Renderer 端盲目 resolve 导致逻辑提前执行的问题。 本文详解如何在 electron 应用中通过 ipc 与 contextbridge 实现跨进程异步通知,解决 `.then()` 无效的根本原因------主进程未返回 promise、renderer 端盲目 resolve 导致逻辑提前执行的问题。在 Electron 开发中,一个常见误区是:在 Renderer 进程中手动创建 Promise 并立即 resolve,却未真正等待主进程完成 I/O 操作。你遇到的 promise.then() not working 并非 Promise 本身失效,而是逻辑设计违背了异步通信本质------window.electron.saveJson(dataArray) 是一个无返回值的 IPC 发送调用,它不返回 Promise,也不阻塞执行;而你在 new Promise(...) 内部直接 resolve(),导致回调在文件保存尚未开始时就已触发。? 正确方案:主进程主动通知 + Renderer 端事件监听Electron 的 IPC 机制默认是单向、无返回的(ipcRenderer.send / ipcMain.on)。若需"等待主进程完成",必须采用事件驱动式响应模型:Renderer 发起请求 → 主进程处理并完成后主动发送成功事件 → Renderer 监听该事件执行后续逻辑。1. 配置预加载脚本(preload.js)------安全暴露 IPC 接口const { contextBridge, ipcRenderer } = require('electron');contextBridge.exposeInMainWorld('electron', { // 发起保存请求(无返回) saveJson: (data) => ipcRenderer.send('saveJson', data), // 注册成功回调监听器(推荐使用 once 避免重复绑定) onJsonSaveSuccess: (callback) => { ipcRenderer.once('jsonSuccess', (event, success) => { callback(success); }); }});?? 注意:使用 ipcRenderer.once 而非 on,避免多次调用 concatAndSave() 导致监听器重复注册;若需支持多次响应,请在回调内手动 removeListener 或统一管理事件句柄。 Vozo Vozo是一款强大的AI视频编辑工具,可以帮助用户轻松重写、配音和编辑视频。
相关推荐
529宝宝起名网几秒前
用 Python 开发历史名字查询与起名灵感工具:从古籍人物数据库到名字文化故事生成DBA_G8 分钟前
GBase 8a数据库执行计划查看方式解析用户2986985301413 分钟前
Python 将 HTML 转换为 Word 文档的实践指南初願致夕霞13 分钟前
MySQL_事务(MVCC机制详解)维克兜率天14 分钟前
【维克】模块3总结:从一行空数据,到一个能跑的模型飞Link19 分钟前
定积分理论与 Python 仿真完全指南小静AI工程实验室25 分钟前
Python 爬虫翻页为何重复、漏数据?SQLite 复现 OFFSET、复合游标与快照的 8 项检查cspttty29 分钟前
银行数据分析校招能力模型:SQL、指标体系、可视化与AI辅助分析夜雪一千33 分钟前
如何使用Python实现音频转文本(ASR语音识别)顺风尿一寸37 分钟前
从 ls -U 到 Tomcat libs加载jar包:ext4 目录哈希序如何影响 Java 文件排序顺序