最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
首頁 > 網站開發 > JavaScript >
  • JavaScript教程之electron——ipcMain模塊、ipcRenderer模

  • 2019-06-17 10:28 來源:未知

ipcMain

從 主進程 到 渲染進程 的異步通信。

ipcMain模塊是EventEmitter類的一個實例。 當在主進程中使用時,它處理從渲染器進程(網頁)發送出來的異步和同步信息。 從渲染器進程發送的消息將被發送到該模塊。

舉個例子

// 在主進程中.
const { ipcMain } = require('electron')
// 監聽asynchronous-message,接收渲染進程發送的消息
ipcMain.on('asynchronous-message', (event, arg) => {
  console.log(arg) // prints "ping"
  // 回復消息
  event.reply('asynchronous-reply', 'pong')
})

// 監聽synchronous-message,接收渲染進程發送的消息
ipcMain.on('synchronous-message', (event, arg) => {
  console.log(arg) // prints "ping"
  // 返回的值
  event.returnValue = 'pong'
})
//在渲染器進程 (網頁) 中。
const { ipcRenderer } = require('electron')
// 向主進程synchronous-message發送消息,并接收返回結果
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"

// 接收asynchronous-reply返回的消息
ipcRenderer.on('asynchronous-reply', (event, arg) => {
  console.log(arg) // prints "pong"
})
// 向asynchronous-message發送消息
ipcRenderer.send('asynchronous-message', 'ping')

方法

ipcMain.on(channel, listener)

  • channel String
  • listener Function

監聽 channel,當接收到新的消息時 listener 會以 listener(event, args...) 的形式被調用。

// 監聽message,接收渲染進程發送的消息
ipcMain.on('message', (event, arg) => {
  ...
})

ipcMain.once(channel, listener)

  • channel String
  • listener Function

添加一次性的 listener。當且僅當下一個消息發送到 channel 時 listener 才會被調用,隨后 <0>listener</0> 會被移除。

// 監聽message,接收渲染進程發送的消息
ipcMain.once('message', (event, arg) => {
  ...
})

ipcMain.removeListener(channel, listener)

  • channel String
  • listener Function

從監聽器數組中移除監聽 channel 的指定 listener

ipcMain.removeAllListeners([channel])

  • channel String

刪除所有監聽者,或特指的 channel 的所有監聽者.

事件對象

傳遞給 callback 的 event 對象有如下方法:

event.frameId

一個整數,表示發送此消息的呈現程序幀的ID。

event.returnValue

將此設置為在一個同步消息中返回的值.

event.sender

返回發送消息的web內容,您可以調用event.sender。發送以回復異步消息 webContents.send

event.reply

一個函數,它將向發送您當前正在處理的原始消息的呈現程序frane發送IPC消息。您應該使用此方法對發送的消息進行“回復”,以確保回復將進入正確的流程和框架。

ipcRenderer

從 渲染器進程 到 主進程 的異步通信。

ipcRenderer 是一個 EventEmitter 的實例。 你可以使用它提供的一些方法從渲染進程 (web 頁面) 發送同步或異步的消息到主進程。 也可以接收主進程回復的消息。

方法

ipcRenderer.on(channel, listener)

  • channel String
  • listener Function

監聽 channel, 當新消息到達,將通過 listener(event, args...) 調用 listener。

ipcRenderer.on('refresh-page', (event, arg) => {
  ...
})

ipcRenderer.once(channel, listener)

  • channel String
  • listener Function

為事件添加一個一次性用的listener 函數.這個 listener 只有在下次的消息到達 channel 時被請求調用,之后就被刪除了。

ipcRenderer.once('printerList', (event, arg) => {
  ...
})

ipcRenderer.removeListener(channel, listener)

  • channel String
  • listener Function

為特定的 channel 從監聽隊列中刪除特定的 listener 監聽者。

ipcRenderer.removeAllListeners(channel)

  • channel String

移除所有的監聽器,當指定 channel 時只移除與其相關的所有監聽器。

ipcRenderer.send(channel[, arg1][, arg2][, ...])

  • channel String
  • ...args any[]

通過 channel 發送異步消息到主進程,可以攜帶任意參數。 在內部,參數會被序列化為 JSON,因此參數對象上的函數和原型鏈不會被發送。

主進程可以使用 ipcMain 監聽channel 來接收這些消息。

ipcRenderer.send("printerList");

ipcRenderer.sendSync(channel[, arg1][, arg2][, ...])

  • channel String
  • ...args any[]

返回 any - 由 ipcMain 處理程序發送過來的值。

通過 channel 發送同步消息到主進程,可以攜帶任意參數。 在內部,參數會被序列化為 JSON,因此參數對象上的函數和原型鏈不會被發送。

主進程可以使用 ipcMain 監聽channel來接收這些消息,并通過 event.returnValue 設置回復消息。

注意: 發送同步消息將會阻塞整個渲染進程,你應該避免使用這種方式 - 除非你知道你在做什么。

ipcRenderer.sendSync("printerList");

ipcRenderer.sendTo(webContentsId, channel, [, arg1][, arg2][, ...])

  • webContentsId Number
  • channel String
  • ...args any[]

通過通道向帶有webContentsId的窗口發送消息。

ipcRenderer.sendToHost(channel[, arg1][, arg2][, ...])

  • channel String
  • ...args any[]

就像 ipcRenderer.send,不同的是消息會被發送到 host 頁面上的 <webview> 元素,而不是主進程。

事件對象

event.senderId

返回webcontent。發送消息的id,您可以調用event.sender. sendto (event)。要回復此消息,請參見ipcRenderer。發送到以獲取更多信息。這只適用于從不同呈現程序發送的消息。直接從主進程集事件發送的消息。senderId為0。

 
 
標簽: electron

pk10赛车冠军技巧
最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
体彩大乐奖历史记录 财神捕鱼机漏洞 手机捕鱼游戏外挂 456棋牌是真的吗 工商执照过户赚钱 《赌城夜蒲团团转》最终预告 龙王捕鱼能破解吗 浙江快乐彩走势图兑奖 十分到家上班怎么赚钱