我有點困惑這個問題的答案的一些術語:What is the event precedence in JavaScript?瀏覽器中的事件循環和任務隊列有區別嗎?
是否有事件循環和任務隊列有多大可以把這些隊列之間的區別嗎?
因爲當我用setInterval()設置一個Interval並用alert()中斷這個時間間隔的時候,這個時間間隔就會出現在警報顯示的時間。
我有點困惑這個問題的答案的一些術語:What is the event precedence in JavaScript?瀏覽器中的事件循環和任務隊列有區別嗎?
是否有事件循環和任務隊列有多大可以把這些隊列之間的區別嗎?
因爲當我用setInterval()設置一個Interval並用alert()中斷這個時間間隔的時候,這個時間間隔就會出現在警報顯示的時間。
堆:存儲所有的變量,對象,功能和所有這些內存分配
事件隊列:他是人名單包含功能TOBE EXCECUTED通過堆棧。
堆棧:他是誰執行功能通過事件隊列
事件循環召開主要負責人:
他是人(經理)誰與聯繫事件隊列和S大頭釘。
他所做的是。IFFF的堆是空和事件隊列包含函數執行。 然後從事件隊列推動第一功能堆疊
視覺實施例1:latentflip
我想你只是在setInterval()
看到一個保護機制。如果setInterval()
不能跟上期望的時間間隔速率,那麼它將跳過間隔,因爲如果它沒有,那麼額外的時間間隔可能會永遠建立起來,這樣做不好,因爲它會使某個隊列飽和。
從我在排隊行爲中看到的一切,間隔和事件進入同一隊列,並按它們意圖發生的順序進行處理。不同的是,如果隊列中已經有一個setInterval()
回調尚未處理,它將不會在隊列中放置另一個回調(因此跳過它)。
Mousemove事件也會被特別處理,所以您無法用它們填充隊列。
這是一個實現細節 - 規範說明事件循環可以使用多個任務隊列來存儲事件。據推測,隊列的大小沒有實際的限制。
例如,鼠標/鍵盤事件可能會進入特殊的INPUT任務隊列,該任務隊列的優先級高於其他任務,這可能會讓UI更加響應。
alert
將中斷事件的處理,因爲它是一個同步操作。據推測,任何適用的事件將在此期間排隊。
1,雖然[是JavaScript的保證是單線程?](http://stackoverflow.com/q/2734025/1048572)被回答「否」 – Bergi 2013-02-26 16:25:13
這是事件** **循環,而不是事件隊列:) – 2013-02-26 16:16:00