То, что вы просите, если я правильно понимаю, это передать обратный вызов из процесса визуализации в основной процесс и получить обработчик в основном вызове с ответом, а не отправлять его обратно.
так, вместо того чтобы делать это:
main.js:
ipcMain.on("message", (e, arg) => {
e.sender.send("onMessage", "response");
});
renderer.js:
ipcRenderer.send("message", 1);
ipcRenderer.on("onMessage", (e, response) => { });
вы хотите сделать это:
main.js:
ipcMain.on("message", (e, arg, callback) => {
callback("response");
});
renderer.js:
function callback(response) { }
ipcRenderer.send("message", 1, callback);
Тогда нет, вы не можете этого сделать, потому что вы не можете передавать функции в такие процессы, как этот.Даже если вы .toString()
функция и затем воссоздаете функцию в главном процессе через new Function(...)
, вы будете выполнять ее в контексте основного процесса, а не средства визуализации, и, вероятно, вы захотите выполнить ее вПроцесс рендеринга.
Использование e.sender.send(...)
- идиоматический способ отправки сообщений другому процессу, и вы не должны уклоняться от него.