如何在电子中实现过程同步



我是电子的新手,即将构建一个迷你应用程序。在电子中,我不知道这种情况:主要过程需要将消息发送到渲染过程时,当主过程获得信号时从另一个渲染过程。我尝试了:

ipc.on('signalA', function() {
    ipc.sendSync('signalB');

}(;

,但事实证明sendsync不是一个函数。

在电子中,您可以在主过程(main.js(和渲染器过程(浏览器窗口(

之间进行通信

main.js:

const {app, BrowserWindow} = require('electron');
const path = require('path');
const url = require('url');
let win = new BrowserWindow({width: 400, height: 275});
win.loadURL(url.format({
   pathname: path.join(__dirname, 'index.html'),
   protocol: 'file:',
   slashes: true
}));
win.webContents.on('did-finish-load', () => {
   win.webContents.send('asynchronous-message', 'ping');
});
ipcMain.on('synchronous-reply', (event, arg) => {
  console.log(arg)  // prints "ping1"
  event.returnValue = 'pong'
});
ipcMain.on('asynchronous-message', (event, arg) => {
   console.log(arg)  // prints "ping2"
   event.sender.send('asynchronous-reply', 'pong2');
});

在网页(index.html(中:

<script>
  const {ipcRenderer} = require('electron');
  ipcRenderer.on('asynchronous-message', (event, arg) => {
     console.log(arg);  // prints "ping"
     const res = ipcRenderer.sendSync('synchronous-reply', 'ping1');
     console.log(res);  // prints "pong"
  });
  ipcRenderer.send('asynchronous-message', 'ping2')
  ipcRenderer.on('asynchronous-reply', (event, arg) => {
    console.log(arg) // prints "pong2"
  });
</script>

您可以在此处阅读文档:ipc-main.md

最新更新