原文:https://github.com/electron/electron/blob/master/docs/api/ipc-renderer.md
譯者:Lin
從渲染進(jìn)程到主進(jìn)程的異步通訊。
進(jìn)程:渲染進(jìn)程
ipcRenderer
模塊是一個EventEmitter類的實例习寸。它提供少量的方法讓你能夠從渲染進(jìn)程發(fā)送同步和一步的消息到主進(jìn)程昼激。你也可以收到主進(jìn)程的回復(fù)怔接。
代碼例子請查看ipcMain
<h2 id="methods">方法</h2>
ipcRenderer
模塊有以下監(jiān)聽事件和發(fā)送消息的方法:
<h3 id="ipcRenderer-on"><code>ipcRenderer.on(channel, listener)</code></h3>
-
channel
String類型 -
listener
Function類型
監(jiān)聽channel
尤误,當(dāng)一個新消息送達(dá)listener
將會被調(diào)用listener(event, args...)
惹资。
<h3 id="ipcRenderer-once"><code>ipcRenderer.once(channel, listener)</code></h3>
-
channel
String類型 -
listener
Function類型
給事件添加一個一次性listener
函數(shù)哮兰。這個listener
只會在下一次一個消息送達(dá)channel
時觸發(fā)毛萌,觸發(fā)后它就會被移除。
<h3 id="ipcRenderer-removeListener"><code>ipcRenderer.removeListener(channel, listener)</code></h3>
-
channel
String類型 -
listener
Function類型
通過指定的channel
移除監(jiān)聽器數(shù)組中指定的listener
喝滞。
<h3 id="ipcRenderer-removeAllListeners"><code>ipcRenderer.removeAllListeners([channel])</code></h3>
-
channel
String類型(可選參數(shù))
移除所有監(jiān)聽起阁将,或者channel
中指定的那些監(jiān)聽器。
<h3 id="ipcRenderer-send"><code>ipcRenderer.send(channel[, arg1][, arg2][, ...])</code></h3>
-
channel
String類型 -
...args
any[]類型
通過channel
異步發(fā)送一個消息到主進(jìn)程右遭,你可以發(fā)送任意參數(shù)做盅。參數(shù)將在JSON內(nèi)部被聯(lián)播,因此沒有函數(shù)或者原型鏈被引用窘哈。
主進(jìn)程通過ipcMain
模塊監(jiān)聽channel
來處理它言蛇。
<h3 id="ipcRenderer-sendSync"><code>ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])</code></h3>
-
channel
String類型 -
...args
any[]類型
通過channel
同步發(fā)送一個消息到主進(jìn)程,你可以發(fā)送任意參數(shù)宵距。參數(shù)將在JSON內(nèi)部被聯(lián)播腊尚,因此沒有函數(shù)或者原型鏈被引用。
主進(jìn)程通過ipcMain
模塊監(jiān)聽channel
來處理它满哪,并且通過設(shè)置event.returnValue
來給予回復(fù)婿斥。
注意:發(fā)送一個同步消息將會阻塞整個渲染進(jìn)程劝篷,除非你知道你正在做什么,否則你永遠(yuǎn)不要用到這個接口民宿。
<h3 id="ipcRenderer-sendToHost"><code>ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])</code></h3>
-
channel
String類型 -
...args
any[]類型
同ipcRenderer.send
一樣娇妓,但是事件將會被送到主頁的<webview>元素而不是送到主進(jìn)程。