1. 程式人生 > >你真的懂JavaScript計時器嗎?

你真的懂JavaScript計時器嗎?

在今天之前我一直以為setTimeout這個函式是非同步的,無意中看到了一篇關於setTimeout的文章,發現自己以前的認識全是錯誤的,趕緊總結下。

先看一段程式碼:

var start = new Date();

setTimeout(function(){

var end = new Date();

console.log("Time elapsed: ", end - start, "ms");

}, 500);

while (new Date - start <= 1000)

{

}

執行這段指令碼可以看到:Time elapsed的值大概在1001ms左右,肯定會超過1000ms。也就是說:setTimeout失效了,指定的函式並沒有在500ms後執行,而是延遲到1000ms後才執行。

原文連結