瀏覽器的event loop

2022-07-29 11:00:16 字數 427 閱讀 6764

在瀏覽器的事件中,包含巨集任務和微任務。巨集任務有:setimmediate,settimeout,setinterval,i/o,requestanimationframe,ui rendering,微任務有:promise,process.nexttick,object.observe,mutationobserver

執行全域性script同步**,這些**有的是同步任務,有的是非同步任務

執行完所有同步**後,呼叫棧就清空了

從微任務佇列中取出位於隊首的任務進行執行,微任務佇列長度減一

繼續取出微任務佇列隊首任務並放到stack呼叫棧中執行,直到微任務佇列被清空,這過程中如果由產生了微任務,則會被放到佇列最尾端,在此過程中一起被清空

當微任務隊列為空,則去巨集任務佇列取出隊首任務放到呼叫棧執行

執行完畢後,再次檢查微任務佇列並執行,如此迴圈往復。。

基礎篇 瀏覽器中的Event loop

在講event loop之前,我們先思考乙個問題 原因可能是如果js是多執行緒,在多個執行緒中處理dom就可能會發生問題 乙個執行緒新增新節點,另乙個執行緒中刪除節點 當然可以引入讀寫鎖解決這個問題 好了,接下來我們開始講event loop 簡單的說,就是js在執行的過程中會產生執行環境,這些執行...

瀏覽器中的 Event Loop,巨集任務與微任務

當我們執行 js 的時候其實就是往執行棧中放入函式,那麼遇到非同步 的時候該怎麼辦?其實當遇到非同步的 時,會被掛起並在需要執行的時候加入到 task 有多種 task 佇列中。一旦執行棧為空,event loop 就會從 task 佇列中拿出需要執行的 並放入執行棧中執行,所以本質上來說 js 中...

瀏覽器 瀏覽器高效搜尋

一 常見場景 以場景的形式來說明 1 場景1 網路上查詢一本書的 指定文件型別 如pdf 如 搜尋關鍵字 c primer plus 的 pdf 版本 輸入 格式 關鍵字 空格 filetype pdf 例項 c primer plus中文版 filetype pdf關鍵字 filetype 2 場...