1. <wbr id="m8vu6"></wbr>

      <del id="m8vu6"><center id="m8vu6"><source id="m8vu6"></source></center></del>
        <p id="m8vu6"><sub id="m8vu6"></sub></p>

        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

        相關教程
        免费看成年人视频大全_免费看成年人视频在线观看