原文:https://github.com/electron/electron/blob/master/docs/api/ipc-renderer.md
译者:Lin
从渲染进程到主进程的异步通讯。
进程:渲染进程
ipcRenderer
模块是一个EventEmitter类的实例。它提供少量的方法让你能够从渲染进程发送同步和一步的消息到主进程。你也可以收到主进程的回复。
代码例子请查看ipcMain
<h2 id="methods">方法</h2>
ipcRenderer
模块有以下监听事件和发送消息的方法:
<h3 id="ipcRenderer-on"><code>ipcRenderer.on(channel, listener)</code></h3>
-
channel
String类型 -
listener
Function类型
监听channel
,当一个新消息送达listener
将会被调用listener(event, args...)
。
<h3 id="ipcRenderer-once"><code>ipcRenderer.once(channel, listener)</code></h3>
-
channel
String类型 -
listener
Function类型
给事件添加一个一次性listener
函数。这个listener
只会在下一次一个消息送达channel
时触发,触发后它就会被移除。
<h3 id="ipcRenderer-removeListener"><code>ipcRenderer.removeListener(channel, listener)</code></h3>
-
channel
String类型 -
listener
Function类型
通过指定的channel
移除监听器数组中指定的listener
。
<h3 id="ipcRenderer-removeAllListeners"><code>ipcRenderer.removeAllListeners([channel])</code></h3>
-
channel
String类型(可选参数)
移除所有监听起,或者channel
中指定的那些监听器。
<h3 id="ipcRenderer-send"><code>ipcRenderer.send(channel[, arg1][, arg2][, ...])</code></h3>
-
channel
String类型 -
...args
any[]类型
通过channel
异步发送一个消息到主进程,你可以发送任意参数。参数将在JSON内部被联播,因此没有函数或者原型链被引用。
主进程通过ipcMain
模块监听channel
来处理它。
<h3 id="ipcRenderer-sendSync"><code>ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])</code></h3>
-
channel
String类型 -
...args
any[]类型
通过channel
同步发送一个消息到主进程,你可以发送任意参数。参数将在JSON内部被联播,因此没有函数或者原型链被引用。
主进程通过ipcMain
模块监听channel
来处理它,并且通过设置event.returnValue
来给予回复。
注意:发送一个同步消息将会阻塞整个渲染进程,除非你知道你正在做什么,否则你永远不要用到这个接口。
<h3 id="ipcRenderer-sendToHost"><code>ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])</code></h3>
-
channel
String类型 -
...args
any[]类型
同ipcRenderer.send
一样,但是事件将会被送到主页的<webview>元素而不是送到主进程。