开始我想说的是,文档很重要。强烈建议升级最新版本,不然你文档很多方法你用不了。
一、渲染线程(前端)向主线程(后台)发送消息
1.渲染线程
var data = ipcRenderer.sendSync('app-update', '') //同步消息
ipcRenderer.send('app-update', "123") //异步消息
2.主线程
这里需要把前端的event 挂在global对象,args是前端发的第二个参数
ipcMain.on('app-update', (event, ...args) => {
global.eventValue =event
// 其他处理逻辑
})
前端发送同步,和异步消息,响应的方式是不一样的
//对渲染线程同步消息响应
// global.eventValue.returnValue = percentage
// 响应渲染线程异步,异步消息响应需要在前端在绑定一个响应监听事件。
global.eventValue.reply('show-percent',percentage) // ELECTRON VERSION>5.0.13
//electron5.0.13 以下
// global.eventValue.sender.send('show-percent',percentage)
当然记得导包
import { app, BrowserWindow,ipcMain,ipcRenderer } from 'electron'
二、主线程(后台)向渲染线程(前端)发送消息
这里的例子是打开对话框
/**
* 发送消息
*/
const { webContents } = require('electron');
export async function openDialog(object) {
return new Promise((resolve, reject) => {
var content = webContents.getFocusedWebContents();
if (content != null) {
content.send('openDialog', object); // 这里关键
}
ipcMain.on('asynchronous-up', function (event, arg) {
console.log("------------------------------------------------------");
resolve(arg);
})
});
}
前端
ipcRenderer.on("openDialog", (event, arg) => {
//你的处理,如打开dialog
}
dialog的确定按钮逻辑,在发送消息给主线程
ipcRenderer.send("asynchronous-up", this.form);
三.渲染线程使用主线程的值
主线程
global.sharedObject = {
p1:app.getAppPath(),
p2:app.getName(),
p3:app.getPath('exe')
}
渲染线程
const data = remote.getGlobal('sharedObject');
console.log(data);
-
更多内容请看
版权声明:本文为weixin_42551915原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。