我正在尝试仅使用javascript控制台创建自动程序。我需要使用setInterval为我的程序创建一个循环。 代码的相关部分就是这样:
refreshIntervalId =的setInterval(打勾,500);
因此,“tick”功能将每500毫秒调用一次。
但问题是每当浏览器选项卡处于非活动状态时,我最小化它以执行其他操作,setInterval停止工作。当我再次打开浏览器时,它突然重复了很多次以“补偿”未执行该功能的时间。这不是我的预期。
我听说网络工作者可以解决问题。我只需要一个(或两个)单一代码行来通过网络工作者工作,但由于我是IT的业余爱好者,我无法理解所有这些。我只能通过JS控制台访问浏览器,而且我无法访问HTML及其脚本。
我的主要目标是使其循环并正常打破它(setInterval和clearInterval),而浏览器仍然可以处于非活动模式。
我现在该怎么办?感谢您阅读,希望有人可以帮我解决!
答案 0 :(得分:0)
好的,这可能会有点晚了,但是我希望无论如何这都会有用。
将此代码放入您的主要JavaScript中:
let intervalWorker = new Worker('worker.js');
intervalWorker.onmessage = /* Your function here */;
...和这可能是新文件“ worker.js”中代码的示例:
setInterval(() => {
postMessage();
}, 500);
工作者将每500毫秒向您的主线程发布一条空消息。发生这种情况时,您的主线程将在您的工作线程上调用“ onmessage”函数。因此,只需将每500ms需要发生的功能分配给该属性即可。
注意:您需要在服务器上运行此命令,以便JS加载工作文件-否则,出于“安全”原因,它会抱怨。