关于javascript中setTimeout()和clearTimeout()的疑惑。

Posted nanluxiaokui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于javascript中setTimeout()和clearTimeout()的疑惑。相关的知识,希望对你有一定的参考价值。

由于在w3school中学习javascript时,当学到setTimeout()和clearTimeout()方法时。根据它所提供的例子(下面的代码转自w3cschool)—计数程序,发现当你不停的点击开始计数得到button, 计数将会加快,给我的感觉是同时运行好几个计数方法,但是我所不清楚的是这几个方法是同步执行还是异步执行。此时,如果你想要停止setTimeout()方法,你需点击停止button的次数与你点击开始计数button的次数相同。

我觉着这里怎么同步和异步机制都可以解释。希望可以随着我对javascript的学习能够解决这个问题。

<html>
<head>
<script type="text/javascript">
var c=0
var t
function timedCount()
{
document.getElementById(‘txt‘).value=c
c=c+1
t=setTimeout("timedCount()",1000)
}

function stopCount()
{
c=0;
setTimeout("document.getElementById(‘txt‘).value=0",0);
clearTimeout(t);
}
</script>
</head>

<body>

<form>
<input type="button" value="开始计时!" onClick="timedCount()">
<input type="text" id="txt">
<input type="button" value="停止计时!" onClick="stopCount()">
</form>

<p>请点击上面的“开始计时”按钮来启动计时器。输入框会一直进行计时,从 0 开始。点击“停止计时”按钮可以终止计时,并将计数重置为 0。</p>

</body>

</html>

以上是关于关于javascript中setTimeout()和clearTimeout()的疑惑。的主要内容,如果未能解决你的问题,请参考以下文章

关于js中setTimeout循环遇到的问题

javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout的使用场景

关于定时器 setTimeout

关于setTimeout的妙用

处理来自 setTimeout 的错误

Javascript Chrome控制台