var start = new Date;函數
setTimeout(function(){spa
var end = new Date;.net
console.log('end~~~',end-start,'ms');blog
},0);隊列
while(new Date - start < 4000){事件
if(new Date - start == 3999) console.log('end')ip
}get
運行setTimeout後開始計時,把回調函數放在延時事件隊列的最後。回調函數
全部同步的js事件完成後,setTimeout的回調函數纔會被執行,即使是setTimeout設置事件小於同步事件運行的事件,同步事件沒有執行完,setTimeout的回調函數就不會被執行同步
------------------------------------------
<div id="click">aaa</div>
<script>
window.onload=function(){
document.getElementById('click').onclick=function(){
console.log('你點擊了click');
}
var start = new Date;
while(new Date - start < 1000){}
}
</script>
當頁面加載完成後,點擊id#click後,js會把當前點擊的事件放到隊列中去,等同步的js執行完成後再去執行onclick事件。
-----------------------------------------
未完待續