setTimeout(function(){alert(1);}, 1000);

在使用setTimeout、setInterval的时候,会传一个时间来控制代码的执行时机。在经过了设置的时间段后,代码开始执行。这看上去很像是在异步执行。

但是,如果在执行队列中之前的代码执行了超过设置的时间时,例如

function test(){

  setTimeout(function(){alert(1);}, 1000);

  while(true){}

}

此时,由于while执行的时间一定会超过1s,所以alert并不会按照预期在1s之后出现。

05-16 15:21