Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重启Electron应用程序的正确方法是什么?_Javascript_Electron - Fatal编程技术网

Javascript 重启Electron应用程序的正确方法是什么?

Javascript 重启Electron应用程序的正确方法是什么?,javascript,electron,Javascript,Electron,在此Electron文档中,他们建议重新启动应用程序时,应在调用app.重新启动后执行app.quit或app.exit: 请注意,此方法在执行时不会退出应用程序,您必须在调用app.relaunch后调用app.quit或app.exit以重新启动应用程序 然而,经过实验,我发现顺序似乎并不重要。(请参见下面的示例。) 我知道app.quit和app.exit不太一样。前者可以被中断并触发一些事件,而后者将强制应用程序退出,而不会触发任何事件或允许应用程序取消操作 问题:假设强制应用程序退出总

在此Electron文档中,他们建议重新启动应用程序时,应在调用
app.重新启动后执行
app.quit
app.exit

请注意,此方法在执行时不会退出应用程序,您必须在调用app.relaunch后调用app.quit或app.exit以重新启动应用程序

然而,经过实验,我发现顺序似乎并不重要。(请参见下面的示例。)

我知道
app.quit
app.exit
不太一样。前者可以被中断并触发一些事件,而后者将强制应用程序退出,而不会触发任何事件或允许应用程序取消操作

问题:假设强制应用程序退出总是可以的,并且在应用程序退出之前我们没有任何任务要执行,是否存在:

  • 选择
    app.quit
    app.exit
    的原因
  • 必须在
    app.重新启动后运行
    app.quit
    app.exit
    的原因

  • 下面是一个非常简单的电子应用程序:

    package.json

    main.js

    生成以下应用程序菜单:


    点击任何一个菜单项都会产生相同的结果:应用程序退出,然后重新启动。

    electron中有很多错误

    你看这就是其中之一。。。(应用程序退出后重新启动工作)

    --------------------------------------------------------------------------------------

    /*app.quit()*/

    app.quit
    将优雅地退出您的应用程序

    这样的事件侦听器将退出
    退出
    如果您使用
    app.quit退出就会被触发。。
    因此,您可以使用
    event.preventDefault()
    阻止应用程序终止

    /*app.exit()*/

    当使用
    app.exit()
    时,如果即使设置了演示者也无法终止应用程序,则不会调用这些侦听器

    --------------------------------------------------------------------------------------

    我想现在您可以根据您的用例来决定在退出和退出之间应该使用什么

    至于你的第二个问题,我没有确切的答案,因为在我看来,app.relaunch在app.exit之后有效。。我已经在v4和v5中对其进行了测试。。两者的结果相同

    通常在退出或退出之前调用重新启动

    并且应该遵循,因为它可能在将来的版本中得到解决

  • quit
    优雅地关闭所有窗口,然后退出,而
    exit
    只是终止应用程序,而不考虑任何其他内容,如节点中的
    process.exit
    。为了安全起见,在大多数情况下,您都希望使用
    quit

  • 最好先调用
    重新启动
    ,以防止出现争用情况。由于事件循环的工作方式,这在生产中几乎永远不会发生,但这只是一种良好的实践


  • 重新启动electron应用程序的正确方法是:

    app.relaunch()
    app.exit()
    

    你在考虑什么样的比赛条件?您是否有一个在开发过程中可能发生的事情的例子,即
    app.relaunch();app.quit()?GitHub中有我可以跟踪的bug吗?
    
    const {app, BrowserWindow, Menu} = require('electron');
    let mainWindow;
    
    app.on('ready', () => {
      Menu.setApplicationMenu(
        Menu.buildFromTemplate([
          {role: 'appMenu', submenu: [
    
            {label: 'relaunch(); exit()', click() {
              app.relaunch();
              app.exit();
            }},
    
            {label: 'relaunch(); quit()', click() {
              app.relaunch();
              app.quit();
            }},
    
            {type: 'separator'},
    
            {label: 'exit(); relaunch()', click() {
              app.exit();
              app.relaunch();
            }},
    
            {label: 'quit(); relaunch()', click() {
              app.quit();
              app.relaunch();
            }}
          ]}
        ])
      );
      mainWindow = new BrowserWindow({width: 640, height: 480});
      mainWindow.loadFile('index.html');
    });
    
    app.relaunch()
    app.exit()