事件迴圈 巨集任務 微任務

2021-10-10 11:54:00 字數 637 閱讀 2742

在js中我們經常會需要「同時」進行多項工作,例如:定時器、事件、非同步資料互動等,那麼js是如何管理這些任務的,又是如何確定他們的執行順序的?

首先,所有的語言都擁有併發模型的概念,也就是說多個任務如何同時執行,大部分語言支援多執行緒執行,js擁有所有語言中最簡單的併發模型——js使用單執行緒的"事件迴圈(event loop)"來處理多個任務的執行

簡單來說,js的事件迴圈,每次讀取乙個任務,然後執行這個任務,執行完再繼續獲取下乙個,如果暫時沒有任務,就暫停執行,等待下乙個任務到來;如果在執行任務的過程中有新的任務到達,也不會中斷現有任務的執行,而是新增到佇列的尾部等待

console.log('aaa');  正常第乙個輸出

settimeout(()=>console.log('t1'), 0); 巨集任務 丟到佇列裡 第七個執行

(async ()=>)().then(()=>);

console.log('bbb'); 第四個執行

aaabbb

t1t2

簡單來說就是按順序執行,巨集任務丟到最後執行 微任務按順序執行

輸出結果 

js 事件迴圈 巨集任務 微任務

console.log 1 settimeout function then function new promise function resolve then function settimeout function then function 先分析 的執行步驟 1 從上向下執行 consol...

微任務,巨集任務,事件迴圈(Event Loop)

最近遇到了事件迴圈的問題,於是決定好好的研究一番。看了一篇文章感覺講的特別好。我們都知道event loop的執行順序是 執行巨集任務 該巨集任務產生的微任務,若微任務執行中產生了新的微任務,則繼續執行微任務,微任務執行完畢,再回到巨集任務進行下一輪迴圈。後來自己也看了很多例子,但是疑惑點是,對於p...

事件迴圈2(微任務 和巨集任務)

js是單執行緒,一次只能執行乙個任務,當有乙個耗時很長時,有乙個在後面等待,會造成堵塞,非同步的目的就是處理堵塞,提公升效能。一 promise物件 promise呼叫內部函式。promise有三種物件 1.pending 待定,未初始化 2.resolved 非同步成功 3.rejected 非同...