对JS里“异步”的理解

异步

所谓的异步代码其实就是非现在运行的代码,或者说在将来某个时刻会执行的代码;在JavaScript中,有一部分代码是会在主线程(JavaScript是单线程的,只有主线程)运行时就运行的代码(现在运行的代码),而另外一部分则放到事件循环队列中运行的代码,而这部分代码就是异步代码;而异步代码永远会在现在运行的代码运行之后才有可能被执行。

注意:异步也是单线程的,区别只是在单线程上的执行时时间的早晚差异

事件循环队列

这个是异步实现的基础,对于其模型,可以想像一下,有一个管口向下的长长的输送管子,里面依次地紧挨着地排了许多的货物,每次运送时,管子口的那个货物就会被输出,直到管子没有货物,而当又有货物从管子上口装入时,就又有货物输出。这个可以类比我们的事件循环队列,上面例子的管子就是我们的事件循环队列,而里面的货物就是一个个回调事件函数,而每次运送就是事件循环队列的每次tick,每次运送时就有一个货物被输出,就是对应了每次tick都有一个回调事件函数被调用执行;也就是说这个事件循环队列会永无休止地检测队列里有没有回调函数,有的话就执行,但一定是一个一个来的,不能插队。用伪代码表示这个事件循环队列:

 // 事件循环队列
let loop_queue 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值