简单而不简单的倒计时

来源:互联网 发布:手机英语软件 编辑:程序博客网 时间:2024/04/29 18:55

大家对倒计时的第一反应就是通过setTimeout方法来反复执行,貌似这个问题都没有需要探讨的价值,其实不然。

不同手机上和pc上的new Date()会有些许差异,所以比如说给定一个未来的时间戳,你获取当前时间与未来时间戳的时间差,并不是获取new Date()然后与未来时间戳进行相减,而是通过当前服务器时间来获取这个最初的时间差,而这个服务器时间不一定和你电脑上的时间统一。一般会以北京时间为标准时间

获取当前时间和未来时间戳的最初时间差后,我们就开始倒计时了,这时大家都会考虑到要用setTimeout执行来进行倒计时,可是这个在移动端的时候,会存在问题么

事实是显然的,js在ios端上会存在锁定的问题,当你手指长时间停留在屏幕上时,ios会识别并停止一切js的执行,那么当然setTimeout也就失效了,当你手指离开屏幕时,你会发现,哎,好像时间不对啊

所以我们需要对这种情况进行对应处理,需要过一段时间校验一次时间差,并重新开始倒计时,我目前采用的是60s的时候重新校验一次时间。便于保证iOS倒计时正常(当然,校验前可能仍会存在数秒的偏差,这个可能仍需处理)

其实倒计时还存在一个问题。。。setTimeout(function(){},1000)并不是严格的一秒执行一次函数,所以如果我们的倒计时是利用的setTimeout(function(){},time)这种形式的,本身倒计时时间也会存在一定偏差

        当然一般人没这么死抠。。。

0 0
原创粉丝点击