gpt4 book ai didi

javascript计时器/持续时间在一段时间后给出错误的计算

转载 作者:行者123 更新时间:2023-11-30 11:25:25 25 4
gpt4 key购买 nike

几天前,我发现了一个 我认为我可以用它来计算用户登录时间的代码。但是在我的应用程序中测试后,我发现一段时间后时间有所不同。所以,我决定使用 名为“Staying Alive for Google Chrome”的扩展名,它工作得很好“或者我希望......并且说实话,它有点好”,但之后我发现了与所附图片相同的问题。 enter image description here

这是 的代码我发现:

/*===============*/

var seconds = 0;
var minutes = 0;
var hours = 0;
var t;

function add() {
seconds++;
if (seconds >= 60) {
seconds = 0;
minutes++;
if (minutes >= 60) {
minutes = 0;
hours++;
}
}

$('#totalTime').html ( "" + (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds) );

timer();
}

function timer() {
t = setTimeout(add, 1000);
}
/*===============*/

所以,我希望有人能帮助我,如何让定时器正常运行,或者有更好的解决方案,因为我在这个页面中有6个以上的定时器..

P.S. 此应用程序使用 编码和 我有一个 在同一页面中每 5000 毫秒调用一次。

P.P.S. 我的一位 friend 建议 , 但我真的不太了解它。

非常感谢

最佳答案

由于 JavaScript 在浏览器中的单线程中执行,因此这种行为是意料之中的。基本上,setTimeout 和 setInterval 函数的延迟量应被视为最小值

例如,如果您要执行一个导致大量 DOM 操作的函数,这可能会推迟回调的执行。

有关此主题的更多信息,请阅读 John Resig 的帖子 on the the execution order of JavaScript timers .

您 friend 的建议可以提供解决方案 WebWorkers在不同的线程中执行,因此不太容易阻塞 DOM 操作。但是,我建议您在服务器端处理时间计算。例如,通过在至少包含流的开始日期和时间的数据库中为流创建条目。然后:

  1. 让您的 JavaScript 应用轮询服务器以同步时间
  2. 或者,最好使用 WebSocket 设置流媒体连接.

关于javascript计时器/持续时间在一段时间后给出错误的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com