RT ,用 electron v16 写了个小项目,其中有个功能,需要定时每 2 秒发送 http 请求某个接口。
程序窗口可见的情况下,请求正常发送,一旦程序最小化或锁屏(硬盘已设置不休眠)下,运行几十分钟或几小时后,定时器会变成 1 分钟或者几分钟运行一次,定时器写在渲染进程内,尝试过以下方法,均未解决。
1 、设置 backgroundThrottling
官方文档: https://www.electronjs.org/docs/latest/api/browser-window#new-browserwindowoptions
const mainWindow = new BrowserWindow({
width: 1360,
height: 700,
title: 'XXX',
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
nodeIntegration: true,
contextIsolation: false,
enableRemoteModule: true,
backgroundThrottling: false
}
});
2 、使用 nodejs 的 timers 或其它定时器 package
const {setInterval, clearInterval} = require('timers')
node-schedule: https://github.com/node-schedule/node-schedule
3 、防止系统休眠
const {app, BrowserWindow, ipcMain, Menu, dialog, powerSaveBlocker} = require('electron');
powerSaveBlocker.start('prevent-display-sleep');
请教下各位 V 友还有其它思路么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.