zoukankan      html  css  js  c++  java
  • js 宏任务,微任务

       在了解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

  • 相关阅读:
    刚子扯谈 活着 没那么简单
    改写整数
    刚子扯谈:一起聊聊微信这孙子
    刚子扯谈:未完待续的微信5.0
    Citrix 服务器虚拟化之十 Xenserver高可用性HA
    JS实现——俄罗斯方块
    一种文件捆绑型病毒研究
    XP系统登录界面,需要手动点击用户帐户后才会出现输入密码的界面
    加密javascript代码
    Python的在线编辑环境
  • 原文地址:https://www.cnblogs.com/mumu-web/p/10148569.html
Copyright © 2011-2022 走看看