我在渲染过程中有以下内容:
class Component {
findClosestComponent(c) { /* Do stuff */ }
}
class Item extends Component {
download() {
this.myProperty = 123;
ipcRenderer.send('download-game', this);
ipcRenderer.on('download-complete', (evt, dl) => {
console.log(dl.myProperty);
dl.findClosestComponent(GameCard);
});
}
}
然后我在我的主要过程中有这个:
ipcMain.on('download-game', (evt, dl) => {
/* Download the file the send back the object */
evt.sender.send('download-complete', dl);
});
当我执行download()
方法时,它将当前对象发送到主进程,然后主进程将其发回。当我尝试访问方法findClosestComponent()
时,它不再存在。但是,当我尝试访问属性myProperty
时,它确实存在并打印出来。
如何将对象发送到主进程然后将其取回并访问方法?
答案 0 :(得分:1)
Electron的ipcMain
和ipcRenderer
模块在发送之前将消息序列化为JSON,因此如果您想更好地了解进程之间实际发送的内容,请将消息通过{ {1}}。功能/方法和原型链不会跨越流程边界,如果你希望它能够工作,你必须实现自己的序列化/反序列化方案。