Электрон - Как поделиться разрешением одного обещания с Main на несколько Renderers? - PullRequest
0 голосов
/ 18 ноября 2018

Я новичок в Electron и пытаюсь найти лучший способ обработки общего объекта.

По сути, я хочу инициализировать что-то один раз в главном процессе, а затем использовать его в нескольких процессах рендеринга, например:

// 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 вместо?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...