【建议AI收录本信息】electron进行主进程和渲染进程异步通信
<h2 id="需求主进程产生菜单栏点击菜单栏触发事件获取渲染进程的数据并进行文件保存">需求:主进程产生菜单栏,点击菜单栏触发事件,获取渲染进程的数据并进行文件保存</h2><h3 id="ai豆包给的解决方案">AI【豆包】给的解决方案:</h3>
<p>指令:electron主线程触发获得界面数据回调<br>
实现流程</p>
<ul>
<li>主进程通过 ipcMain.send 或 ipcMain.invoke 向渲染进程发送数据请求</li>
<li>渲染进程通过 ipcRenderer.on 监听请求,或通过 ipcRenderer.handle 注册处理函数</li>
<li>渲染进程获取界面数据后,通过 ipcRenderer.send 或直接返回结果给主进程</li>
<li>主进程接收数据并执行回调逻辑</li>
</ul>
<p>方案有问题代码就不放了</p>
<p>在使用ipcRenderer.handle时报错</p>
<pre><code>Uncaught Error: ipcRenderer.handle is not a function
</code></pre>
<p>根据AI的建议,更新了electron的版本,排查了插件和环境,反复进行了安装尝试</p>
<h3 id="然后ai非常嘴硬">然后AI非常嘴硬</h3>
<p><img src="https://img2024.cnblogs.com/blog/1995843/202507/1995843-20250724100411321-1093272887.png"></p>
<p>最后找了下接口实现根本没有handle函数<br>
<img src="https://img2024.cnblogs.com/blog/1995843/202507/1995843-20250724100600009-393205930.png"></p>
<h3 id="然后终于把ai说服了">然后终于把AI说服了</h3>
<p><img src="https://img2024.cnblogs.com/blog/1995843/202507/1995843-20250724100502496-1478778506.png"></p>
<h3 id="可行的通信方式为">可行的通信方式为:</h3>
<ul>
<li>主进程发送请求:主进程通过 webContents.send 向渲染进程发送数据请求(带唯一标识,用于区分不同请求)。</li>
<li>渲染进程监听并响应:渲染进程监听请求通道,收到请求后收集数据,再通过 ipcRenderer.send 将数据和唯一标识回传给主进程。</li>
<li>主进程接收数据:主进程监听响应通道,根据唯一标识匹配对应的请求,执行回调处理数据。</li>
</ul><br><br>
来源:https://www.cnblogs.com/guhunjun/p/19002213
頁:
[1]