定时器(interval)与延时器(timeout)

定时器与延时器提供了一种让一段代码在一定毫秒之后,再异步执行的能力。由于 JavaScript 单线程的特性,定时器与延时器提供了一种跳出这种限制的方法,以一种不太直观的方式来执行代码。

有一个需要理解的重要概念,就是 JavaScript 中定时器与延时器的执行时间是不能保证的,原因就是因为 JavaScript 是单线程的。JavaScript 在同一时间只能执行一个代码块,这些代码块的执行就阻塞了异步事件的处理。这意味着,当一个异步事件发生时(如鼠标单击,ajax 回调事件),它就会排队,并且在线程空闲时才进行执行。

很容易验证浏览器对定时器或延时器的阻塞,使用alert()即可,代码很简单:

查看全文