首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >setInterval在一小时后用电子停止

setInterval在一小时后用电子停止
EN

Stack Overflow用户
提问于 2020-01-02 02:54:40
回答 2查看 2.8K关注 0票数 7

希望有人能给我指明正确的方向。我的电子应用程序需要每10分钟执行一次API调用。目前,我使用渲染器进程中的setInterval循环来完成这一操作,该流程每10分钟触发一次。

它通常运作良好,几个小时后,它似乎只是停止射击。我有几个进程清除并重新启动了setInterval,试图解决这个问题,但似乎没有任何效果。

该应用程序打开新的浏览器窗口并显示内容,这意味着主窗口可能不会一直处于焦点位置,我怀疑这可能与此有关。

我试过添加

代码语言:javascript
复制
powerSaveBlocker.start("prevent-display-sleep");
powerSaveBlocker.start("prevent-app-suspension");

对我的主要电子js脚本来说,但它似乎没有效果。问题主要出现在Windows机器上。我不完全确定它是发生在Mac还是Linux上。

那么,我的问题是,有什么原因会发生这种情况,间隔只是一个点后死亡吗?powerSaveBlocker电话对我来说是有意义的,但他们似乎什么也没做。

还是有更好的方法让后台进程间隔运行,以执行这些API调用?我看过node-schedule,但我不确定它是否能解决这个问题。

EN

Stack Overflow用户

回答已采纳

发布于 2020-01-06 10:20:54

在这里回答我自己的问题,值得称赞的是@snwflk,他为我指出了正确的方向,并对原来的帖子进行了评论。

虽然我未能绝对肯定地澄清这个问题,但从那以后,我也没有看到这个问题。(它并不总是100%的重复性,它很难测试,因为它需要一台机器,单独呆几个小时,这可能会显示问题,也可能不会显示问题)。

然而,我已经把这个补丁推出给了一些客户,他们的机器似乎几天后还在网上,这是一个好迹象。

因此,解决方案是禁用主BrowserWindow对象上的BrowserWindow (interval在呈现程序进程中运行)。

博士:https://electronjs.org/docs/api/browser-window#new-browserwindowoptions

一个例子

代码语言:javascript
复制
mainWindow = new BrowserWindow({
    webPreferences: {
        backgroundThrottling: false,
    },
});

请注意,有一些错误阻止了这个设置( https://github.com/electron/electron/issues/20974 ),所以一定要更新您的电子版本。

票数 9
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59557854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档