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

      • 前言:
        Event Loop即時間循環,是指瀏覽器或Node的一種解決javascript單線程運行時不會阻塞的一種機制,也就是咱們常用異步的原理
      • Js運行機制
             一、不一樣運行環境,js運行效果不一致
             二、nodeJs基於libuv實現,參考 http://docs.libuv.org/en/v1.x/design.html
             三、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()構造函數裏面屬於同步代碼,而非微任務
        • 瀏覽器端全部的宏任務都在一個事件隊列裏執行
          ,每次事件隊列取出一個事件之時有微任務就把微任務執行完,而後纔開始執行事件
          • 宏任務每次只取一個
          • 微任務執行多個
          • 微任務會放在當前時間循環的末尾
相關文章
相關標籤/搜索