JavaScript當前有兩個定時器函數,setTimeout與setInterval方法。
首先再來明確一下什么異步操作,異步操作的有點是什么。
所謂異步操作就是在同一時刻可以做多件事情,而不是所有事情在同一個隊列排隊等待執行。
大家最為熟知的一個就是ajax異步請求,當向服務器請求數據的時候,不會堵塞其他代碼的執行。
明晰了異步操作的特點,那么它的有點也不言而明,同一時刻可以做多件事情自然比同一時刻只能做一件事情要好。
如果JavaScript沒有異步操作,那么將會寸步難行,會被卡死。
大家都知道setTimeout與setInterval方法可以實現異步操作,可能還有一點疑問。
首先看一段代碼實例:
   [ 其他 ] 運行代碼    下載代碼
<script>
function front(){
  // code
}
front();
 
setTimeout(function(){
  // code
},5000);
</script>
假設front方法執行需要花費4秒時間,代碼分析如下:
(1).JavaScript是單線程的,這個應該沒有什么疑問。
(2).front方法執行完畢后,再過1秒,定時器的回調函數就會執行,這是司空見慣的操作。
(3).下面按照JavaScript是單線程這理論去解析代碼,既然是單線程的,當front的方法執行的時候,定時器函數肯定沒有得到執行,只有當front函數執行完畢,setTimeout方法再去執行,然后5秒后執行它的回調函數,這很明顯與事實不符。
(4).原因是這樣的,雖然JavaScript是單線程的,但是它的執行環境,也就是瀏覽器是多線程的,時間計數并不是由JavaScript現成來完成,而是由瀏覽器的某個現成完成,所以定時器函數能夠實現異步操作。

代碼描述:JavaScript 定時器函數,JavaScript 定時器函數異步原理



57 75



用戶評論
大牛,別默默的看了,快登錄幫我點評一下吧!:)      登錄 | 注冊


熱門標簽: js js代碼 js實例 javascript javascript代碼 javascript實例 js函數 javascript函數
×
×

注冊

官方QQ群

掃描上面二維碼加微信群

官方QQ群

jQuery/js討論群
群號:642649996
Css3+Html5討論群
群號:322131262

加群請備注:從官網了解到

湖北30选5开奖结果走势图表