首頁 >web前端 >js教程 >Javascript事件循環規則詳解

Javascript事件循環規則詳解

DDD
DDD原創
2024-11-07 22:44:03670瀏覽

Detailed explanation of Javascript event loop rules

眾所周知,Javacript 是單執行緒語言,但是為什麼我們可以使用非同步操作呢?因為非同步操作是由具有多執行緒、多進程能力的瀏覽器執行的。 Javascript總是運行在單線程上,當非同步程式碼被發現時,就會交給瀏覽器執行,然後瀏覽器調用相應的線程或進程,包括http請求、GUI、事件觸發等來處理這些非同步操作.

一般來說,Javasctip 任務可以分為三類:同步任務、微任務、巨集任務,運行順序為sync -> 任務。微->宏。首先執行同步程式碼,然後瀏覽器會將微程式碼放入等待同步任務完成的微任務佇列中,並將巨集程式碼放入等待微程式碼完成的巨集任務佇列中。
這個優先權順序類似於OS上的多層回饋佇列調度演算法。

常見微任務:Promise.then()、Promise.catch()、new MutationObserver()、process.nextTick()
常用巨集任務:setTimeout、setInterview、requestAnimationFrame()

順便說一下,process.nextTick() 既不是微任務也不是巨集任務,它只是在同步程式碼之後、微任務之前執行。

以上是Javascript事件循環規則詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn