APP下载
报价宝  ›  科技  › 

做一个网页秒表遇到的问题

报价宝 来源:baojiabao.com 发布时间:2019-09-08 14:52:00 11月16日更新
报价宝综合消息做一个网页秒表遇到的问题

如题,实现一个网页秒表,初始思路是,设定一个函式,函式中一个key值每1毫秒自增1,然后根据key值计算出时,分,秒,毫秒对应的值,然后输出:

逻辑程式码是这样的:

var key=0;

function timekeeper() {

key++

const millis=key%1000

const second=Math.floor(key/1000)%60

const minute=Math.floor(key/(1000*60))%60

const hour=Math.floor(key/(1000*60*60))

document.getElementById('millis').innerText=millis

document.getElementById('second').innerText=second

document.getElementById('minute').innerText=minute

document.getElementById('hour').innerText=hour

}

function computer() {

timer=setInterval('timekeeper()',1)

}

点选开始按钮触发computer() 函式,每1毫秒自增,想法是好的,但是,出现了巨大的延迟,搞不明白,逻辑是没有问题的,那问题是什么呢?我往timekeeper函式里加了一端语句——console.log('1')。然后右击网页,点选检查(N)(我用的是Google浏览器),然后点选按钮执行程式码。结果是这样的

显然程式码的执行并不如预期,这是因为setInterval指定的是“开始执行”之间的间隔,并不考虑每次任务执行本身所消耗的事件。因此实际执行中,大多数情况下,两次执行之间的间隔会小于指定的时间。比如,setInterval指定每100ms执行一次,每次执行需要5ms,那么第一次执行结束后95毫秒,第二次执行就会开始。如果某次执行耗时特别长,比如需要105毫秒,那么它结束后,下一次执行就会立即开始。这就意味着,我们不能用setInterval实现精确的时间控制。所以用计算的方法实现秒表显然是不现实的,即使把间隔时间调大。不精准,秒表就没有意义。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 报价宝 数码相机价格 手机价格 笔记本价格 红米手机价格