1

我有三个文件,我正在尝试共享一个我称为 sharedArray 的变量,该变量存储在 array.js 文件中,在我的主 js 文件和另一个使用 export 的文件 fileA 上。虽然,main.js 和 fileA.js 似乎创建了自己的 array.js 实例。有什么办法可以防止这种情况发生并且让 main.js 和 fileA.js 都指向同一个变量 sharedArray?

main.js

const electron = require('electron');
const path = require('path');
const arrayJS = require(path.join(__dirname,"array.js"));
const {ipcMain} = electron;

function countArray(){
    console.log(`There are ${arrayJS.sharedArray.length} values in shared array`);
}

ipcMain.on('countArrayFromMain', function(e){
    countArray();
});

数组.js

var sharedArray = [];

function getSharedArray(){
  return sharedArray;
}

function setSharedArray(newArray){
  sharedArray = newArray;
}

module.exports = {
  getSharedArray,
  setSharedArray
  }

文件A.js

const electron = require('electron') ;
const {ipcRenderer} = electron;
const arrayJS = require(path.join(__dirname,"array.js"));

var newArray = [1,2,3];
arrayJS.setSharedArray(newArray);

console.log(`There are ${arrayJS.sharedArray.length} values in shared array`); // outputs 3
ipcRenderer.send('countArrayFromMain'); // outputs 0
4

1 回答 1

3

每个代码,main.js代表 Electron 的 Main 进程,filaA.js用于 Renderer 进程。由于这两个是不同的进程,因此无法跨进程共享相同的对象引用:如果要跨进程实现单例,则应使用 IPC 询问一个进程的值。

于 2021-01-08T22:33:02.777 回答