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