电子-如何从Main到多个渲染器共享一个诺言解析?

时间:2018-11-17 22:22:50

标签: javascript electron

我是Electron的新手,他试图找出处理共享对象的最佳方法。

基本上,我想在Main进程中初始化一次,然后在多个渲染器进程中使用它,就像这样:

// main.js
const node = rosnodejs.initNode(); // returns a promise

// renderer1.js
node.then((nh) => {
  nh.subscribe("topic1");
})

// renderer2.js
node.then((nh) => {
  nh.subscribe("topic2");
})

我可以使用node共享remote,但是nh.subscribe在我的渲染器中成为匿名函数,并且失败。这是我在做什么:

// main.js
global.node = rosnodejs.initNode(); // returns a promise
global.node.then((nh) => {
  nh.subscribe("topic1");  // WORKS PERFECTLY!
})

// renderer1.js
const remote = require('electron').remote;
const node = remote.getGlobal('node');
node.then((nh) => {
  nh.subscribe("topic2"); // FAILS MISERABLY.
})

失败消息为Error: Could not call remote function 'subscribe'. Check that the function signature is correct. Underlying error: type.datatype is not a function

是否有一个不错的方法来解决这个问题?我应该改用ipcMain / ipcRenderer吗?

0 个答案:

没有答案