electron 在主进程和渲染进程之间通信(异步和同步)

electron主进程是后台运行,对应main.js,渲染进程是前端看到的,对应index.html。两个进程之间的通信首选ipc方式。

异步通信

异步通信,在发送消息之后,不会阻止同一进程中程序的继续运行。此示例渲染进程发送异步消息 “ping” 到主进程, 然后主进程回答 “pong”。
在渲染进程中

// 引入ipcRenderer
const ipcRenderer = require('electron').ipcRenderer
 
// 发送标识为asynchronous-message的消息'ping'
ipcRenderer.send('asynchronous-message', 'ping')
 
 
// 接收标识为asynchronous-reply的消息
ipcRenderer.on('asynchronous-reply', function (event, arg) {
   console.log(arg)
})

在主进程中

// 接收来自标识为asynchronous-message的消息
ipcMain.on('asynchronous-message', function (event, arg) {
 
  // 返回标识为asynchronous-reply的消息'pong'
  event.sender.send('asynchronous-reply', 'pong')
})

同步通信

同步通信,程序在完成任务之前会阻止同一进程中的操作。
在渲染进程

// 引入ipcRenderer
const ipcRenderer = require('electron').ipcRenderer
 
// 发送同步消息,返回给变量replay,在等待主进程返回中,会阻止其他操作
const reply = ipcRenderer.sendSync('synchronous-message', 'ping')
console.log(reply)

在主进程

// 引入ipcMain
const ipcMain = require('electron').ipcMain
 
// 接收标识为synchronous-message的消息,然后返回'pong'
ipcMain.on('synchronous-message', function (event, arg) {
  event.returnValue = 'pong'
})

electron 中文api说明
https://github.com/demopark/electron-api-demos-Zh_CN

Leave a Reply

Your email address will not be published. Required fields are marked *