Electron学习笔记:渲染进程向主进程注册回调的坑

以下代码会出现错误

// 主进程
const el = require('electron');
el.app.testMain = {
    testName: 'main process object',
    testCallback: function(callback) {
        callback.apply(this);
    }
};


// 渲染进程
const mt = require('electron').remote.app.testMain;
mt.testCallback(function() {
    console.log(this.testName);
});

渲染进程的回调方法在主进程中调用时,被封装成一个名为callInRenderer的方法,因此使用apply绑定this时,并没有实际绑定到渲染进程的回调方法上面。

以下代码可解决:

// 主进程
const el = require('electron');
el.app.testMain = {
    testName: 'main process object',
    testCallback: function(callback) {
        callback.apply(null, [this]);
    }
};

// 渲染进程
const mt = require('electron').remote.app.testMain;
mt.testCallback(function(ref) {
    console.log(ref.testName);
});

相关推荐