Javascript 多窗口管理:从窗口列表中删除窗口

Javascript 多窗口管理:从窗口列表中删除窗口,javascript,node.js,electron,Javascript,Node.js,Electron,说明 在我的Electron程序中,我将所有可见的渲染器窗口存储在主进程中的单个链接列表中。 当一个新的元素被创建时,它会被添加到列表中,但我不知道当它们关闭时如何再次从列表中删除它们(分别计算要删除的列表元素) 主流程中的代码 global.windows = new LinkedList(); function createWindow(p_URL, p_width, p_height, p_x, p_y, p_minWidth, p_minHeight, p_parent, p_icon

说明

在我的Electron程序中,我将所有可见的渲染器窗口存储在主进程中的单个链接列表中。 当一个新的元素被创建时,它会被添加到列表中,但我不知道当它们关闭时如何再次从列表中删除它们(分别计算要删除的列表元素)

主流程中的代码

global.windows = new LinkedList();

function createWindow(p_URL, p_width, p_height, p_x, p_y, p_minWidth, p_minHeight, p_parent, p_icon) {
  // Create the browser window.
  let win;
  win = new BrowserWindow({width: p_width, height: p_height, minWidth: p_minWidth, minHeight: p_minHeight, parent: p_parent, icon: p_icon, show: false});

  global.windows.insert(win);
  if(p_URL !== undefined)
    win.loadURL(p_URL)

  win.once('ready-to-show', () => {
    win.show()
  });


    console.log("added: size = " + global.windows.getSize());

  win.on('closed', () => {
    console.log("removeStart: size = " + global.windows.getSize());
    // Dereference the window object

    let i;
    for(i = global.windows.getHeadNode(); i.getData() !== win; i = i.next);

    if(i >= global.windows.getSize())
      console.log("Error");
    else
      global.windows.removeAt(i);

    console.log("i: " + i);
    console.log("removeEnd: size = " + global.windows.getSize());
    win = null;
  });

  return win;
}
问题

我尝试这样做,遍历列表,直到找到要删除的元素,然后删除它。当我现在执行程序,然后关闭其中一个窗口时,我得到以下错误

Uncaught Exception:
Error: Object has been destroyed
    at Error (native)
这是由
关闭时的eventlistener中的(i>=global.windows.getSize())
行引起的。该行之前的log命令生成输出,但该行之后的log命令不执行任何操作。没有从列表中删除任何元素。 我做错了什么?有没有更好的方法来管理窗口