jQuery setInterval实时延迟

时间:2014-05-02 15:14:57

标签: javascript jquery

可以让setInterval与当前时间一起工作吗?

我的意思是,我正在制作一个供个人使用的自定义倒计时库,我需要计算每一秒,但有时setInterval实时延迟,我认为这是因为浏览器滞后或执行时间。或者还有另一种更好的方法吗?

我的函数执行时间的一个例子,即使有1000毫秒,时间可能会有所不同:

start: 898, end: 898, execution time: 0 index.js:92 start: 898, end: 899, execution time: 1 index.js:92 start: 899, end: 900, execution time: 1 index.js:92 start: 900, end: 901, execution time: 1 index.js:92 start: 904, end: 905, execution time: 1 index.js:92 start: 904, end: 905, execution time: 1 index.js:92 start: 905, end: 905, execution time: 0 index.js:92 start: 905, end: 905, execution time: 0 index.js:92 start: 906, end: 906, execution time: 0 index.js:92 start: 906, end: 907, execution time: 1 index.js:92 start: 892, end: 892, execution time: 0 index.js:92 start: 907, end: 907, execution time: 0 index.js:92 start: 907, end: 908, execution time: 1 index.js:92 start: 908, end: 908, execution time: 0 index.js:92 start: 908, end: 909, execution time: 1 index.js:92 start: 909, end: 910, execution time: 1 index.js:92

2 个答案:

答案 0 :(得分:4)

不要计算开头的秒数,并尝试将每个滴答数减少一个。

相反,找出结束时间,然后在setInterval / setTimeout的每个刻度上(这应该经常是每秒一次),计算当前时间和结束时间之间的时间量。

答案 1 :(得分:1)

如果浏览器中的"滞后"问题是你可以设置一个网络工作者来完成时间并触发主页上的某些事件。

由于网络工作者非常昂贵,所以很多开销,但可以帮助你。