8-electron 主进程与渲染进程之间的通信(同步通信、异步通信)

electron 主进程与渲染进程之间的通信(同步通信、异步通信)

electron 主进程和渲染进程通信

有时候我们想在渲染进程中通过一个事件去执行里面的方法。
或者在渲染进程中通知主进程处理事件,
主进程处理完成后广播一个事件让渲染进程去处理一些事情。
这个时候就用到了主进程和渲染进程之间的相互通信。

electron 主进程和渲染进程的通信主要用到两个模块:ipcMainipcRenderer

ipcMain:当在主进程中使用时,它处理从渲染器进程(网页)发送出来的异步和同步信息,当然也有可能从主进程向渲染进程发送消息。

ipcRenderer:使用它提供的一些方法从渲染进程(web 页面)发送同步或异步的消息到主进程。也可以接受主进程回复的消息。

场景 1 渲染进程给主进程发送异步消息

// 渲染进程
const {ipcRenderer} = require('electron');
ipcRenderer.send('msg', {name: '张三'}); // 异步
// 主进程
const {ipcMain} = require('electron');
ipcMain.on('msg', (event, arg) => {
    console.log(event, arg);
});

场景 2 渲染进程给主进程发送异步消息,主进程接收到异步消息以后通知渲染进程

// 渲染进程
const {ipcRenderer} = require('electron');
ipcRenderer.send('msg', {name: 'ZHANG_SAN'});
// 主进程
const {ipcMain} = require('electron');

ipcMain.on('msg', (event, arg) => {
    event.sender.send('reply', 'pong');
});
// 渲染进程
const {ipcRenderer} = require('electron');

ipcRenderer.on('reply', function(event, arg) {
    console.log(arg); // prints 'pong'
});

场景 3 渲染进程给主进程发送同步消息

// 渲染进程
const {ipcRenderer} = require('electron');

const msg = ipcRenderer.sendSync('msg-a');

console.log('msg: ', msg);
// 主进程
ipcMain.on('msg-a', event => {
    event.returnValue = 'hello';
});

你可能感兴趣的:(8-electron 主进程与渲染进程之间的通信(同步通信、异步通信))