发送到/来自ipcRenderer

时间:2017-01-20 20:53:43

标签: javascript electron

我在渲染过程中有以下内容:

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时,它确实存在并打印出来。

如何将对象发送到主进程然后将其取回并访问方法?

1 个答案:

答案 0 :(得分:1)

Electron的ipcMainipcRenderer模块在​​发送之前将消息序列化为JSON,因此如果您想更好地了解进程之间实际发送的内容,请将消息通过{ {1}}。功能/方法和原型链不会跨越流程边界,如果你希望它能够工作,你必须实现自己的序列化/反序列化方案。