码迷,mamicode.com
首页 > Web开发 > 详细

js 宏任务,微任务

时间:2018-12-20 14:39:07      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:inter   了解   顺序   lov   存在   说明   ESS   time   love   

   在了解async之后,发现一个自己不是很熟悉的点儿,在这儿记录一下

    js 中存在宏任务和微任务,js 的执行顺序是 一个宏任务执行结束之后才会去执行下一个宏任务,微任务是在本宏任务的主要的任务结束之后,再去执行微任务,当所有的微任务结束之后,这个宏任务也就算执行结束了,值的注意的是,script 就是一个大的宏任务
   先分类:
       宏任务  srcipt > setImmediate  > messageChannel > setTimeout/setInterval
       微任务  promise相关的  reslove 里边的    

   举例说明
      <script>

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

            })

            console.log(‘5‘)

      </script>

       结果会是   1  3  5  4   2 

      因为script 和 setTimeout 都是宏任务,所以setTimeout 会在script 结束之后执行,所以 2 的最后的
      then 是微任务,要等宏任务的主线任务结束之后执行,所以会 是先3 ,然后跳出 执行 5, 5完成之后,宏任务的主线完成
      开始执行微任务  then , 打印  4 ,之后,宏任务结束,开始执行另一个宏任务,也就是 setTimeout , 打印 2

js 宏任务,微任务

标签:inter   了解   顺序   lov   存在   说明   ESS   time   love   

原文地址:https://www.cnblogs.com/mumu-web/p/10148569.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!