同步阻塞:做一件事,沒有拿到結果之前,就一直在這等着,一直等到有結果了,再去做下邊的事
異步非阻塞:A調用B,無需等待B的結果,B通過狀態,通知等來通知A或回調函數來處理。
微任務:一個需要異步執行的函數,執行時機是在主函數執行結束之后、當前宏任務結束之前。
宏任務:宏任務的時間粒度比較大,執行的時間間隔是不能精確控制的,對一些高實時性的需求就不太符合。
常見微任務:
Promise.then
MutaionObserver
Object.observe(已廢棄;Proxy 對象替代)
process.nextTick(Node.js)
常見宏任務 :
1. script (可以理解為外層同步代碼)
2. setTimeout/setInterval
3. UI rendering/UI事件
4. postMessage,MessageChannel
5. setImmediate,I/O(Node.js)