写了一个简单的番茄时钟。setInterval所执行的函数是比较耗时的动作,setInterval仍然会按照原计划安排调用那个函数,而不考虑之前的任何阻塞,这样随着时间的推移,队列中等待执行的函数就会越来越多。当用户点击按钮的时候,会看见数字不断跳动,实际上就是多个函数同时作用在计时器上,所以计时器上的数字跳动会有异常,网上的大多是通过将setInterval 换为 setTimeout来防止后续任务不断堆积。但实际上也可以直接增加一个判断函数对点击事件进行处理。防止多次点击造成函数堆积。代码如下。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>番茄时钟</title>
<style type="text/css">
input {
position: absolute;
top: 50%;
left: 50%</