ipcMain.handle
是 Electron 主进程中的一个方法,用于处理从渲染进程发送过来的 IPC
请求,并返回一个 Promise
。渲染进程可以使用 ipcRenderer.invoke
方法发送 IPC
请求到主进程,并等待主进程处理完成后返回结果。
在主进程中 (main.ts):
import { app, BrowserWindow, ipcMain } from 'electron';
app.on('ready', () => {
const mainWindow = new BrowserWindow();
ipcMain.handle('sumNumbers', async (event, num1: number, num2: number) => {
return num1 + num2;
});
});
在渲染进程中 (renderer.ts):
import { ipcRenderer } from 'electron';
async function sumNumbers(num1: number, num2: number) {
try {
const result = await ipcRenderer.invoke('sumNumbers', num1, num2);
console.log('Result:', result); // 输出 8
} catch (error) {
console.error('Error:', error);
}
}
sumNumbers(5, 3);
在上面的示例中,我们将主进程和渲染进程的代码分别放在了 main.ts 和 renderer.ts 文件中,并使用了 TypeScript 的类型定义。在渲染进程中,我们使用了 async/await 来等待 ipcRenderer.invoke 的结果,并捕获可能的错误。