JS 線程簡述
js是單線程的,一次只能執行一個任務,執行完畢後才能繼續下一個。
js執行任務的方式也叫作同步執行,同步和異步與我們平時理解的不太一樣,平時的同步我們會認爲是多個事情一起做,但是在js中我們所謂的同步任務是一個接一個的像是排隊一樣的去做。
同步任務是指在主線程上排隊執行的任務,只有前一個任務執行完畢,才能繼續執行下一個任務,當我們打開網站時,網站的渲染過程,比如元素的渲染,其實就是一個同步任務
但是隻有同步任務是不能滿足日常的一些需求的,這個時候便出現了一個異步概念。
異步任務是指不進入主線程,而進入任務隊列的任務,只有任務隊列通知主線程,某個異步任務可以執行了,該任務纔會進入主線程,當我們打開網站時,像圖片的加載,音樂的加載,其實就是一個異步任務
js中的異步任務又分宏任務和微任務(大概如下所示):
宏任務:渲染事件、請求、script、setTimeout、setInterval
微任務:Promise.then、MutationObserver(監聽DOM)
JS 執行機制
現在我們已經知道了js的同步和異步任務以及異步任務中的宏任務和微任務,下面就是執行順序的問題啦。
事件循環(EventLoop)