0
在Electron中,我有我的主要过程打开BrowserWindow。 BrowserWindow加载一个html页面,然后同一个窗口最终加载另一个html页面。如果渲染器进程关闭,收集电子全局变量垃圾?
main.js
var mainWindow;
global.mainState = {
settings: {}
}
mainWindow = createWindow('main', {
width: 1000,
height: 800,
});
if (curState == 'load') {
mainWindow.loadURL(`file://${__dirname}/interface/load.html`, {})
}
if (curState == 'login') {
mainWindow.loadURL(`file://${__dirname}/interface/login.html`, {})
}
load.html
const remote = require('electron').remote;
var testGlobal = remote.getGlobal('mainState')
testGlobal.settings = 'test value'
testGlobal.settings.inner = 'test value2'
当main.js加载第二页(login.html的),将全局变量被删除/取消引用?文档说,如果渲染器进程取消引用全局变量,那么该变量将被gc'd。当我尝试测试这个时,我得到了不一致的结果,我只是想从比我更明智的人那得到一些解释。
谢谢你的有用答案。我开始使用您的想法,但在同步变量时遇到麻烦。现在我注意到,如果我从renderer发送消息到main来更改变量,那么在执行渲染器中的下一行时,变量不会更改。我如何同步这两个值,使值一致 –
这就是javascript中异步函数的工作方式。你可以使用'ipcRenderer.sendSync',但那会完全阻止你的渲染器。 – RoyalBingBong