IpcRenderer.invoke
๐ก Electron์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ฉ์๋ ์ค ํ๋.
- ipcRenderer ๊ฐ์ฒด๋ ๋ ๋๋ฌ ํ๋ก์ธ์ค์์ ์ฌ์ฉ๋๋ฉฐ, ์ฃผ๋ก ๋ฉ์ธ ํ๋ก์ธ์ค์์ ๋น๋๊ธฐ์ ์ธ ํต์ ์ ์ํด ์ฌ์ฉ.
- ipcRenderer.invoke๋ ๋ฉ์ธ ํ๋ก์ธ์ค์ ๋น๋๊ธฐ์ ์ธ ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ.
- ์ด ๋ฉ์๋๋ Promise๋ฅผ ๋ฐํํ๋ฉฐ, ๋ฉ์ธ ํ๋ก์ธ์ค์์ ์ฒ๋ฆฌ๋๊ณ ์๋ฃ๋ ํ์ Promise ๊ฒฐ๊ณผ๊ฐ ๋ ๋๋ฌ ํ๋ก์ธ์ค์ ์ ๋ฌ.
- ipcRenderer.invoke ๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฉ์ธ ํ๋ก์ธ์ค์์ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ipcMain.handle์ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ
์์
// ๋ ๋๋ฌ ํ๋ก์ธ์ค์์์ ์์ ์ฝ๋
const { ipcRenderer } = require('electron');
async function fetchDataFromMainProcess() {
try {
// 'fetch-data'๋ผ๋ ๋น๋๊ธฐ์ ์ธ ์์ฒญ์ ๋ณด๋
const result = await ipcRenderer.invoke('fetch-data');
console.log(result); // ๋ฉ์ธ ํ๋ก์ธ์ค์์ ๋ฐํ๋ ๊ฒฐ๊ณผ ์ถ๋ ฅ
} catch (error) {
console.error(error); // ์๋ฌ ์ฒ๋ฆฌ
}
}
fetchDataFromMainProcess();
โ ipcRenderer.invoke | ipcMain.handle
๊ฐ๋ ๋ฐ ์์
ipcRenderer.invoke์ ipcMain.handle๋ Electron ํ๋ ์์ํฌ์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ ๊ฐ์ง IPC(Inter-Process Communication) ๋ฉ์๋
ipcRenderer
ipcRenderer.invoke๋ ๋ ๋๋ฌ ํ๋ก์ธ์ค์์ ipcMain.handle์์ ๋ฑ๋กํ ์ด๋ฒคํธ๋ฅผ ํธ์ถํ๊ณ , ๋น๋๊ธฐ์ ์ผ๋ก ์๋ต์ ๋ฐ๋ ๋ฐ ์ฌ์ฉ
์๋ฅผ ๋ค์ด, ๋ ๋๋ฌ ํ๋ก์ธ์ค์์ ipcMain.handle๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉ์ธ ํ๋ก์ธ์ค์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ณ , ipcRenderer.invoke๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ ์์.
Main process
const { ipcMain } = require('electron')
ipcMain.handle('getData', async (event, arg) => {
// handle the data request
return result;
})
Renderer process
const { ipcRenderer } = require('electron')
async function getDataFromMainProcess() {
const result = await ipcRenderer.invoke('getData', arg);
// handle the result from the main process
}
ipcMain
ipcMain.handle๋ ๋ฐ๋ฉด, ๋ฉ์ธ ํ๋ก์ธ์ค์์ ๋ ๋๋ฌ ํ๋ก์ธ์ค์์ ํธ์ถ๋๋ ์ด๋ฒคํธ๋ฅผ ์์ ํ๋ ๋ฐ ์ฌ์ฉ
์๋ฅผ ๋ค์ด, ๋ฉ์ธ ํ๋ก์ธ์ค์์**ipcRenderer.invoke**๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ฌ ํ๋ก์ธ์ค์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋, ipcMain.handle๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ
main process
const { ipcMain } = require('electron')
ipcMain.handle('getData', async (event, arg) => {
// handle the data request
return result;
})
Renderer process
const { ipcRenderer } = require('electron')
async function getDataFromMainProcess() {
const result = await ipcRenderer.invoke('getData', arg);
// handle the result from the main process
}
์ฆ, ipcRenderer.invoke์ ipcMain.handle๋ Electron์์ ๋ ๋๋ฌ ํ๋ก์ธ์ค์ ๋ฉ์ธ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฉ์๋
'Development > Electron' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Electron] electron์ฑ ํ๋ฉด์ด ๋๋๋ง์ด ๋์ง ์๋ ๋ฌธ์ (0) | 2023.06.18 |
---|---|
[Electron] SyntaxError: Cannot use import statement outside a module (0) | 2023.06.17 |
[Electron] dialog.showOpenDialog() (0) | 2023.06.15 |
[Electron] electron ์์ด์ฝ ๋ฃ๊ธฐ (0) | 2023.01.25 |
[Electron] Electron + React ์ฐ๋ํ๊ธฐ (0) | 2023.01.13 |
๋๊ธ