【发布时间】:2020-01-02 02:54:40
【问题描述】:
希望有人可以在这里为我指明正确的方向。我的电子应用程序需要每 10 分钟左右执行一次 API 调用。我目前在渲染器进程中使用 setInterval 循环来执行此操作,该循环每 10 分钟触发一次。
它通常可以正常工作,几个小时后它似乎就停止了射击。我有几个进程可以清除并重新启动 setInterval 以尝试解决问题,但似乎没有任何效果。
该应用会打开新的浏览器窗口并显示内容,这意味着主窗口可能并非始终处于焦点状态,我怀疑这可能与此有关。
我已经尝试添加
powerSaveBlocker.start("prevent-display-sleep");
powerSaveBlocker.start("prevent-app-suspension");
到我的主要电子 js 脚本,但它似乎没有效果。问题主要出现在 Windows 机器上。我不完全确定它是发生在 Mac 还是 Linux 上。
所以我的问题是,有什么理由会发生这种情况,即间隔在一个点之后就消失了? powerSaveBlocker 调用对我来说很有意义,但它们似乎并没有真正做任何事情。
或者有没有更好的方法让后台进程在可以执行这些 API 调用的时间间隔运行?我看过node-schedule,但我不确定它是否能解决这个问题。
【问题讨论】:
-
您能否发布一个最小但完整的示例来重现此行为?由于测试至少需要一个小时,这将有很长的路要走。另外,您使用的是最新的 Electron 版本吗?您是否尝试禁用
webPreferences.backgroundThrottling? -
有趣,我不知道那个设置。谢谢,让我试一试。也许将其发布为答案,以防万一它有效,以便我可以标记它。
-
还要检查您的 Electron 版本,
backgroundThrottling中的 7.1.4 似乎发生了变化 -
有趣,我目前在 5.0.6 上。谢谢@snwflk
-
继@snwflk 的评论之后,似乎错误是直到 7.1.4 您无法关闭后台限制,这意味着计时器总是受到限制:github.com/electron/electron/issues/20974 这几乎可以肯定地解释了问题,也许 snwflk 可以发布那些 cmets 作为答案?
标签: electron