先來一道常見的面試題: 應該不少同學都能答出來,結果為: 這個就涉及到JavaScript事件輪詢中的宏任務和微任務。那么,你能說清楚到底宏任務和微任務是什么?是誰發起的?為什么微任務的執行要先於宏任務呢? 首先,我們需要先知道js運行機制。 js運行機制 ...
為什么要EventLoop JS 作為瀏覽器腳本語言,為了避免復雜的同步問題 例如用戶操作事件以及操作DOM ,這就決定了被設計成單線程語言,而且也將會一直保持是單線程的。而在單線程中若是遇到了耗時的操作 IO,定時器,網絡請求 將會一直等待,CPU利用率將會大打折扣,時間大量浪費。所以需要設計一種方案讓一些耗時的操作放在一邊等待,讓后面的函數先執行,於是有了EventLoop的設計。 將任務分 ...
2021-03-31 18:50 0 493 推薦指數:
先來一道常見的面試題: 應該不少同學都能答出來,結果為: 這個就涉及到JavaScript事件輪詢中的宏任務和微任務。那么,你能說清楚到底宏任務和微任務是什么?是誰發起的?為什么微任務的執行要先於宏任務呢? 首先,我們需要先知道js運行機制。 js運行機制 ...
宏任務包括:<script>整體代碼、setTimeout、setInterval、setImmediate、Ajax、DOM事件微任務:process.nextTick、MutationObserver、Promise.then catch finally JS是單線程,碰見同步 ...
這篇借助於同事准備的技術分享,其他技術文章,書本知識,自己的理解梳理而成 高級程序設計第三版: js 是一門單線程的語言,運行於單線程的環境中,例如定時器等並不是線程,定時器僅僅只是計划代碼在未來的某個時間執行,瀏覽器負責排序,指派某段代碼在某個時間點運行 的優先級 1.為什么規定瀏覽器 ...
微任務 promise 、async await 微任務 遇到微任務,放在當前任務列的最底端(then或者catch里面的內容) 宏任務 setTimeout setInterval 宏任務 遇到宏任務,放到下一個新增任務列的最頂端 ...
如果你已經知道了js中存在宏任務和微任務,那么你一定已經了解過promise了。因為在js中promise是微任務的一個入口。 先來看一道題: 這題的答案是: promise body出現在第一行一點也不意外,意外的是,setTimeout出現在了promise then的后邊 ...
.宏任務(macrotask )和微任務(microtask ) macrotask 和 microtask 表示異步任務的兩種分類。 在掛起任務時,JS 引擎會將所有任務按照類別分到這兩個隊列中,首先在 macrotask 的隊列(這個隊列也被叫做 task queue)中取出第一個任務 ...
一、任務隊列 弄清楚這個概念要先明白什么是任務: 一個任務就是指計划由標准機制來執行的任何 JavaScript,如程序的初始化、事件觸發的回調等。 除了使用事件,你還可以使用 setTimeout() 或者 setInterval() 來添加任務。 所謂任務,淺顯來說就是代碼 ...
js 宏任務和微任務 .宏任務(macrotask )和微任務(microtask ) macrotask 和 microtask 表示異步任務的兩種分類。 在掛起任務時,JS 引擎會將所有任務按照類別分到這兩個隊列中,首先在 macrotask 的隊列 ...