希望有人能给我指明正确的方向。我的电子应用程序需要每10分钟执行一次API调用。目前,我使用渲染器进程中的setInterval循环来完成这一操作,该流程每10分钟触发一次。
它通常运作良好,几个小时后,它似乎只是停止射击。我有几个进程清除并重新启动了setInterval,试图解决这个问题,但似乎没有任何效果。
该应用程序打开新的浏览器窗口并显示内容,这意味着主窗口可能不会一直处于焦点位置,我怀疑这可能与此有关。
我试过添加
powerSaveBlocker.start("prevent-display-sleep");
powerSaveBlocker.start("prevent-app-suspension");对我的主要电子js脚本来说,但它似乎没有效果。问题主要出现在Windows机器上。我不完全确定它是发生在Mac还是Linux上。
那么,我的问题是,有什么原因会发生这种情况,间隔只是一个点后死亡吗?powerSaveBlocker电话对我来说是有意义的,但他们似乎什么也没做。
还是有更好的方法让后台进程间隔运行,以执行这些API调用?我看过node-schedule,但我不确定它是否能解决这个问题。
发布于 2020-01-06 10:20:54
在这里回答我自己的问题,值得称赞的是@snwflk,他为我指出了正确的方向,并对原来的帖子进行了评论。
虽然我未能绝对肯定地澄清这个问题,但从那以后,我也没有看到这个问题。(它并不总是100%的重复性,它很难测试,因为它需要一台机器,单独呆几个小时,这可能会显示问题,也可能不会显示问题)。
然而,我已经把这个补丁推出给了一些客户,他们的机器似乎几天后还在网上,这是一个好迹象。
因此,解决方案是禁用主BrowserWindow对象上的BrowserWindow (interval在呈现程序进程中运行)。
博士:https://electronjs.org/docs/api/browser-window#new-browserwindowoptions
一个例子
mainWindow = new BrowserWindow({
webPreferences: {
backgroundThrottling: false,
},
});请注意,有一些错误阻止了这个设置( https://github.com/electron/electron/issues/20974 ),所以一定要更新您的电子版本。
https://stackoverflow.com/questions/59557854
复制相似问题