乐趣区

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);
});

退出移动版