大家好:
我在用electron寫一個類似編輯器的應用程式,在應用程式的選單列中一項儲存檔案功能:
electron
#因為選單列是在主線程中的,但是保存操作需要獲取渲染線程中一個編輯器裡面的內容.官網只有渲染線程請求主線程的例子(ipcMain和ipcRenderer),但是ipcMain好像不能主動請求ipcRenderer.
ipcMain和ipcRenderer
ipcMain
ipcRenderer
所以想問大家,主執行緒怎麼主動請求渲染執行緒呼叫渲染執行緒的方法或觸發渲染執行緒的事件呢?
謝謝!
光阴似箭催人老,日月如移越少年。
找到解決方法了 ^_^
在ipcMain和ipcRenderer中同時監聽兩個相同名字的事件,然後在主執行緒中使用focusedWindow.webContents.send('save-file')觸發,在ipcRenderer的save-file事件中請求ipcMain的save-file事件並攜帶相應的數據就好了 ipcMain: ipcMain.on('save-file' ,(event ,arg) => { console.log(arg) }) ipcRenderer:
focusedWindow.webContents.send('save-file')
save-file
ipcMain.on('save-file' ,(event ,arg) => { console.log(arg) })
ipcRenderer.on('save-file' ,(event ,arg) => { ipcRenderer.send('save-file' ,'test') })
你可以先給渲染線程綁定一個事件,比如說ipcRenderer.on('save', save);,然後在用戶點擊選單中的Save 時觸發這個事件,然後在save 函數裡再廣播事件,並且傳出來你需要的資料。
ipcRenderer.on('save', save);
save
有點繞,不過暫時只能想到這樣。
找到解決方法了 ^_^
在
ipcMain:
ipcRenderer:
ipcMain
和ipcRenderer
中同時監聽兩個相同名字的事件,然後在主執行緒中使用focusedWindow.webContents.send('save-file')
觸發,在ipcRenderer
的save-file
事件中請求ipcMain
的save-file
事件並攜帶相應的數據就好了你可以先給渲染線程綁定一個事件,比如說
ipcRenderer.on('save', save);
,然後在用戶點擊選單中的Save 時觸發這個事件,然後在save
函數裡再廣播事件,並且傳出來你需要的資料。有點繞,不過暫時只能想到這樣。