js两种定时器

js两种定时器 js系列时间继电器分为哪两类?

js清除计时器的方法?

js系列时间继电器分为哪两类?

定时器一般有两个

1)setTimeout()//n毫秒后执行一次

2)setInterval()//每隔n秒执行一次 这两个方法都有个返回值,返回一个定时器id,可以定义一个变量接收 清除定时器方法: setTimeout()对应的是 clearTimeout(id) setInterval()对应的是 clearInterval(id) 下面有个例子: ltscriptgt //setTimeout 1000ms后执行1次 var i = setTimeout(function(){ },1000) //setInterval 每隔1000ms执行一次 var j = setInterval(function(){ },1000) //清除Timeout的定时器,传入id(创建定时器时会返回一个id) clearTimeout(i) //清除Interval的定时器,传入id(创建定时器时会返回一个id) clearInterval(j) lt/scriptgt

setTimeout不设置时间会如何?

一、问题说明JavaScript中定时器主要有setTimeout和setInterval,但是它们在执行时往往和我们设置的延迟时间有出入。var id1 = setTimeout(fn, delay) //启动一个单定时器,在延迟后调用指定的函数。该函数返回一个惟一的ID,在以后的时间可以通过该ID取消计时器。

var id2 = setInterval(fn, delay) //类似于setTimeout,但不断调用函数(每次都有延迟),直到它被取消。

clearInterval (id2), clearTimeout (id1) //接受一个计时器ID(由上述函数返回)并停止计时器回调的发生。

二、原因分析

浏览器中的所有JavaScript都在单线程上执行,所以异步事件(比如鼠标点击和定时器)仅在线程空闲时才会被调度运行。

为了控制要执行的代码, JavaScript 配置了一个任务队列,这些异步事件任务会按照将它们添加到队列的顺序执行。

而setTimeout() 的第二个参数(延时时间)只是告诉 JavaScript 再过多长时间把当前任务添加到队列中。如果队列是空的,那么添加的代码会立即执行;如果队列不是空的,那么它就要等前面的代码执行完了以后再执行。