Web worker使setInterval正常工作

时间:2016-07-14 12:13:03

标签: javascript setinterval web-worker console.log clearinterval

我正在尝试仅使用javascript控制台创建自动程序。我需要使用setInterval为我的程序创建一个循环。 代码的相关部分就是这样:

  

refreshIntervalId =的setInterval(打勾,500);

因此,“tick”功能将每500毫秒调用一次。

但问题是每当浏览器选项卡处于非活动状态时,我最小化它以执行其他操作,setInterval停止工作。当我再次打开浏览器时,它突然重复了很多次以“补偿”未执行该功能的时间。这不是我的预期。

我听说网络工作者可以解决问题。我只需要一个(或两个)单一代码行来通过网络工作者工作,但由于我是IT的业余爱好者,我无法理解所有这些。我只能通过JS控制台访问浏览器,而且我无法访问HTML及其脚本。

我的主要目标是使其循环并正常打破它(setInterval和clearInterval),而浏览器仍然可以处于非活动模式。

我现在该怎么办?感谢您阅读,希望有人可以帮我解决!

1 个答案:

答案 0 :(得分:0)

好的,这可能会有点晚了,但是我希望无论如何这都会有用。

将此代码放入您的主要JavaScript中:

let intervalWorker = new Worker('worker.js');
intervalWorker.onmessage = /* Your function here */;

...和可能是新文件“ worker.js”中代码的示例:

setInterval(() => {
    postMessage();
}, 500);

工作者将每500毫秒向您的主线程发布一条空消息。发生这种情况时,您的主线程将在您的工作线程上调用“ onmessage”函数。因此,只需将每500ms需要发生的功能分配给该属性即可。

注意:您需要在服务器上运行此命令,以便JS加载工作文件-否则,出于“安全”原因,它会抱怨。