宏队列和微队列

/**
* 说明:
* 1、JS中用来存储待执行回调函数的队列包含两个不同特定的队列
* 2、宏队列:用来保存待执行的宏任务(回调),比如:定时器回调、DOM事件的回调、ajax回调
* 3、微队列:用来保存待执行的微任务(回调),比如:promise的回调、MutationObserver的回调
* 4、JS执行时会区别这两个队列:
* 4.1、JS引擎首先必须先执行所有初始化的同步任务代码
* 4.2、每次准备取出第一个宏任务之前都要先将所有的微任务一个一个取出执行
*/
在这里插入图片描述
判断一下运行结果:

  // 延迟1s执行
 setTimeout(()=>{
            console.log('宏队列setTimeout1(延迟1s):'+1);
        },1000);
  // 延迟1s执行
  setTimeout(()=>{
      const p3 = Promise.resolve('555');
      p3.then(
          value => {console.log('宏队列里面的微队列:'+value);}
      )
  },1000)
  // 不延迟
  setTimeout(()=>{
      console.log('宏队列setTimeout2:'+2);
  })
  const p1 = Promise.resolve('333');
  p1.then(
      value => {
          console.log('微队列1_成功的结果为:'+value);
      }
  )
  const p2 = Promise.resolve('444');
  p2.then(
      value => {
          console.log('微队列2_成功的结果为:'+value);
      }
  )

微队列1_成功的结果为:333
微队列2_成功的结果为:444
宏队列setTimeout2:2
宏队列setTimeout1(延迟1s):1
宏队列里面的微队列:555

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JS的循环机制是指如何处理事件循环中的任务。在JS中,事件循环是一种机制,用于处理异步操作和事件处理。循环机制确保任务按照正确的顺序执行,以保证代码的正确性和性能。 在循环机制中,有两种类型的任务:任务(macro-task)和任务(micro-task)。任务包括整体代码块、setTimeout、setInterval等,而任务包括Promise、MutationObserver、process.nextTick等。 当代码执行时,会首先执行当前代码块中的同步任务,然后执行任务队列中的所有任务。接下来,会从任务队列中选择一个任务执行,直到任务队列为空。然后,再次执行所有任务,以此类推。 事件队列是用来存储待执行的任务的数据结构。每个任务或任务都会被添加到事件队列中。当事件循环开始时,会从事件队列中依次取出任务并执行。 需要注意的是,任务的优先级高于任务。也就是说,在执行完当前任务后,会立即执行所有任务,然后再执行下一个任务。这样可以确保任务能够尽早地被执行,避免出现不必要的延迟。 总结一下: - 循环机制确保异步任务按照正确的顺序执行。 - 任务包括整体代码块、setTimeout、setInterval等。 - 任务包括Promise、MutationObserver、process.nextTick等。 - 事件队列用来存储待执行的任务。 - 任务优先级高于任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值