js 宏任務,微任務

   在瞭解async以後,發現一個本身不是很熟悉的點兒,在這兒記錄一下promise

    js 中存在宏任務和微任務,js 的執行順序是 一個宏任務執行結束以後纔會去執行下一個宏任務,微任務是在本宏任務的主要的任務結束以後,再去執行微任務,當全部的微任務結束以後,這個宏任務也就算執行結束了,值的注意的是,script 就是一個大的宏任務
   先分類:
       宏任務  srcipt > setImmediate  > messageChannel > setTimeout/setInterval
       微任務  promise相關的  reslove 裏邊的    

   舉例說明
      <script>async

            console.log("1")
            setTimeout(function() {console.log('2')}, 0)
            new Promise(function (resolve) {
                console.log('3')
                resolve() 
            }).then( function() {
                console.log('4') ip

            })ci

            console.log('5')io

      </script>console

       結果會是   1  3  5  4   2 function

      由於script 和 setTimeout 都是宏任務,因此setTimeout 會在script 結束以後執行,因此 2 的最後的
      then 是微任務,要等宏任務的主線任務結束以後執行,因此會 是先3 ,而後跳出 執行 5, 5完成以後,宏任務的主線完成
      開始執行微任務  then , 打印  4 ,以後,宏任務結束,開始執行另外一個宏任務,也就是 setTimeout , 打印 2im

相關文章
相關標籤/搜索