将setTimeout与Web Worker一起使用时的React Hooks延迟

时间:2019-03-10 08:47:02

标签: javascript reactjs settimeout web-worker react-hooks

我有一个应用程序,可以计算一天中2点时间之间的多次差异。我使用倒数计时器来显示那2点之间的差异。每当倒计时达到00.00.00时,应用程序就会从2个时间点之间的下一次计算倒计时开始。

所以我需要一个倒计时计时器,即使该选项卡处于非活动状态,该计时器也要一直运行。我发现,当当前选项卡处于非活动状态时,setTimeout将有一个小的延迟

这是我到目前为止所拥有的。我已经实现了WebWorker,但每次切换选项卡时似乎仍然存在延迟。我每秒记录一次计时器,因此我通过在单独的窗口中打开控制台并切换选项卡来对其进行测试。

这是我到目前为止所拥有的

client.on("message", async message =>
{
  // Get the user
  let member = message.member;

  // Get all the roles which match the regex
  let filteredRoles = member.roles.filter((role) => /^#[0-9a-zA-Z]{6}$/.test(role.name));

  // Remove the roles from the member
  member.removeRoles(filteredRoles);
});

我将settimeout设置为1000毫秒,这是1秒,并且当选项卡处于非活动状态时,我已经读取了计时器延迟到1000毫秒的时间,但是仍然存在延迟。有人可以在正确的方向帮助我吗?

1 个答案:

答案 0 :(得分:0)

这可能是由于setTimeout错误:What is the reason JavaScript setTimeout is so inaccurate?

当您调用setTimeout时,该函数将添加到事件表中并在指定时间之后执行,然后在事件循环空闲时执行。