2--面試總結-深入理解js線程進階-宏任務微任務


      • 前言:
        Event Loop即時間循環,是指瀏覽器或Node的一種解決javascript單線程運行時不會阻塞的一種機制,也就是我們經常使用異步的原理
      • Js運行機制
             1、不同運行環境,js運行效果不一致
             2、nodeJs基於libuv實現,參考 http://docs.libuv.org/en/v1.x/design.html
             3、chorme基於
      • 宏任務微任務
            
        • 宏任務,macrotask也叫tasks。一些異步任務的回調會一次進入macro task queue,等待后續被繼續調用,這些異步任務包括:
          • setTimeout
          • setInterval
          • setImmwsiate(Node獨有)
          • I/O
          • UI rendering(瀏覽器獨有)
        • 微任務,microtask,也叫jobs。另一些異步任務的回調會一次進入micro task queue,等待后續被調用,這些異步任務包括
          • process.NextTick(Node獨有)
          • Promise.then()
          • Object.observe
          • MutationObserver
          • (注:這里只針對瀏覽器和NodeJs)
        • -----注意:new Promise()構造函數里面屬於同步代碼,而非微任務
        • 瀏覽器端所有的宏任務都在一個事件隊列里執行
          ,每次事件隊列取出一個事件之時有微任務就把微任務執行完,然后才開始執行事件
          • 宏任務每次只取一個
          • 微任務執行多個
          • 微任務會放在當前時間循環的末尾


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM