Web前端必做笔记之一:JavaScript运行机制(二) 事件循环

JavaScript运行机制(二) 事件循环

<script>
//  process.nextTick与setImmediate方法
       
      //process.nextTick(): 这个方法node里面才能够运行,在浏览器中运行不了
      //这个方法什么时候执行呢? 它是在同步代码执行之后,异步代码执行之前,执行的。

      process.nextTick(()=>{
            console.log(1)
      })
      console.log(2);      
       setTimeout(()=>{console.log(3)},0);     
       console.log(4);
      
      //  1.同步
      //  2.process.nextTick()
      //  3.异步
      //所以输出2,4,1,3
 </script>
<script>
//setImmediate():当前事件循环结束执行 

      //  1.同步
      //  2.process.nextTick()
      //  3.异步
      //  4.setImmediate()

      setImmediate(()=>{
            console.log(1)
      })
      process.nextTick(()=>{
            console.log(2)
      })
      console.log(3);      
       setTimeout(()=>{console.log(4)},0);     
       console.log(5);

       //所以输出:3,5,2,4,1
</script>
  setImmediate(()=>{
            console.log(1)
      })
      process.nextTick(()=>{
            console.log(2)
      })
      console.log(3);      
       setTimeout(()=>{console.log(4)},0);     
       setTimeout(()=>{console.log(5)},1000);   
       setTimeout(()=>{console.log(6)},0);  
       console.log(7);
       //输出:3,7,2,4,6,1,5

       //经过很多次循环才能轮到这个5,因为一开始循环的时候,他会先把4,和6,放入任务队列中,进行执行,执行之后,
       //过了一秒后,就把5放进来,然后事件循环看到有5了,就执行了
        
      

 1. //   回到之前说的为啥计算器有时不准呢
           //这个计时器到点了之后,然后把它放入任务队列中,这就是有时候计时器有的时候会晚,会不准,它到点了,不会立即执行,而是先放入任务队列中,
           //而这个任务队列中什么时候执行,是要看运行栈中有没有执行完,执行完后,它前面有没有任务,它前面有任务还得执行它前面的任务,都执行完,它才能够去执行,所以不准。
</script>

总结:
执行顺序
1.同步
2.process.nextTick()
3.异步
4.setImmediate(当前事件循环结束执行 )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值