Electron官方文档(v1.6.1)中文翻译

7. ipcMain

2017-03-07  本文已影响174人  Shmily落墨

原文:https://github.com/electron/electron/blob/master/docs/api/ipc-main.md
译者:Lin

从主进程到渲染进程的异步通讯。

线程:主线程

ipcMain模块是一个EventEmitter类的实例。在主线程中使用时,它处理发送自渲染线程(网页)的异步和同步消息。发送自渲染器的消息将会使用这个模块中被分发。

<h2 id="sending-messages">发送消息</h2>

它也可以从主进程发送消息到渲染进程,更多信息请查看webContents.send

一个在渲染进程和主进程之间发送和处理消息的例子:

// 在主进程中。
const {ipcMain} = require('electron')
ipcMain.on('asynchronous-message', (event, arg) => {
    console.log(arg)  // 打印结果是"ping"
    event.sender.send('asynchronous-reply', 'pong')
})

ipcMain.on('synchronous-message', (event, arg) => {
    console.log(arg)  // 打印结果是"ping"
    event.returnValue = 'pong'
})


// 在渲染进程中(网页)。
const {ipcRenderer} = require('electron')
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // 打印结果为"pong"

ipcRenderer.on('asynchronous-reply', (event, arg) => {
    console.log(arg) // 打印结果为"pong"
})
ipcRenderer.send('asynchronous-message', 'ping')

<h2 id="methods">Methods</h2>

ipcMain模块又下面的监听事件的方法:

<h3 id="ipcMain-on"><code>ipcMain.on(channel, listener)</code></h3>

监听channel,当一个新的消息送达监听者将会调用listener(event, args...)

<h3 id="ipcMain-once"><code>ipcMain.once(channel, listener)</code></h3>

给事件添加一个一次性listener函数。这个监听者只会在下一次一个消息被发送到channel时被调用,调用之后就会被移除。

<h3 id="ipcMain-removeListener"><code>ipcMain.removeListener(channel, listener)</code></h3>

通过channel在监听者数组中移除指定的listener

<h3 id="ipcMain-removeAllListeners"><code>ipcMain.removeAllListeners([channel])</code></h3>

移除所有监听者,或者指定的channel中的所有监听者。

<h2 id="event-object">Event对象</h2>

通过callback返回的event对象有下面的方法:

<h3 id="event-returnValue"><code>event.returnValue</code></h3>

设置在一个同步消息中的返回值。

<h3 id="event-sender"><code>event.sender</code></h3>

返回发送的消息的webContents,你可以调用event.sender.send来回复异步消息,查看webContents.send来获取更多消息。

上一篇下一篇

猜你喜欢

热点阅读