zoukankan      html  css  js  c++  java
  • 宏队列与微队列

    宏队列与微队列

     

    1,宏队列:用来保存 待执行的宏任务(回调),

           比如:定时器回调 、DOM事件回调、ajax回调

    2,微队列:用来保存待执行的微任务(回调),

           比如:promise的回调、MutationObserve的回调

    3,JS执行时会区别这 2个队列

      JS引擎首先必须先执行所有的初始化同步任务代码

      每次准备取出第一个宏任务执行前,都要将所有的微任务一个一个取出来执行

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    setTimeout(()=>{  //立即放入宏队列
         console.log('setTimeout1')
         Promise.resolve(3).then(
          value => {  //立即放入微队列
            console.log('onResolved3()', value)
          }
         )
     },0)
     
     setTimeout(()=>{  //立即放入宏队列
       console.log('setTimeout2')
     },0)
     
     Promise.resolve(1).then(
       value => {  //立即放入微队列
         console.log('onResolved1()', value)
         setTimeout(()=>{
           console.log('setTimeout3', value)
         },0)
       }
     )
     
    Promise.resolve(2).then(
      value => {  //立即放入微队列
        console.log('onResolved2()', value)
      }
    )

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    setTimeout(() => {
               console.log("0")
           }, 0)
           new Promise((resolve, reject) => {
               console.log("1")
               resolve()
           }).then(() => {
               console.log("2")
               new Promise((resolve, reject) => {
                   console.log("3")
                   resolve()
               }).then(() => {
                   console.log("4")
               }).then(() => {
                   console.log("5")
               })
           }).then(() => {
               console.log("6")
           })
     
           new Promise((resolve, reject) => {
               console.log("7")
               resolve()
           }).then(() => {
               console.log("8")
           })

    1 7 2 3 8 4 6 5 0

  • 相关阅读:
    解决maven无法下载jar的问题
    Vue-Router 基础
    VUE自定义组件
    VUE过滤器
    VUE生命周期函数
    VUE表单输入绑定
    VUE计算属性和监听器
    VUE 模板语法
    VUE介绍
    taro3.x: 函数组件createIntersectionObserver
  • 原文地址:https://www.cnblogs.com/yzy521/p/14179607.html
Copyright © 2011-2022 走看看