setTimeout(function(){}, 0);
結(jié)果是:
0 1 2 3 3 3?
?
?
?分析:
1、在實(shí)踐中,setTimeout 會(huì)在其完成當(dāng)前任何延遲事件的事件處理器的執(zhí)行,以及完成文檔當(dāng)前狀態(tài)更新后,告訴瀏覽器去啟用 setTimeout 內(nèi)注冊(cè)的函數(shù)。
2、setTimeout是異步的。正確的理解setTimeout的方式(注冊(cè)事件):
有兩個(gè)參數(shù),第一個(gè)參數(shù)是函數(shù),第二參數(shù)是時(shí)間值。
調(diào)用setTimeout時(shí),把函數(shù)參數(shù),放到事件隊(duì)列中。等主程序運(yùn)行完,再調(diào)用。
原題等價(jià)于:
1 var i = 0; 2 setTimeout(function() { 3 console.log(i); 4 }, 0); 5 console.log(i); 6 i++; 7 setTimeout(function() { 8 console.log(i); 9 }, 0); 10 console.log(i); 11 i++; 12 setTimeout(function() { 13 console.log(i); 14 }, 0); 15 console.log(i); 16 i++;?
因?yàn)閟etTimeout是注冊(cè)事件。根據(jù)前面的討論,可以都放在后面。
原題又等價(jià)于如下的寫法:
?
?
?
參考資料:【http://www.qdfuns.com/notes/17398/e8a1ce8f863e8b5abb530069b388a158/page/3.html#tagsbar】
轉(zhuǎn)載于:https://www.cnblogs.com/softwarefang/p/6611759.html
總結(jié)
以上是生活随笔為你收集整理的setTimeout(function(){}, 0);的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Spring的事务Transacti
- 下一篇: 查看Linux进程CPU过高具体的线程堆