任务和事件循环

1、js属于单线程

单线程就意味着,所有任务需要排队执行,前一个任务结束,后一个任务才可以执行。如果前一个任务耗时比较长,后面的任务就会一直等待

2、同步任务和异步任务(js的对于多任务的优化方法)

2.1 同步

在函数返回的时候,调用者就能够得到预期的返回值或结果

2.2 异步

在函数返回的时候,调用者不能够得到预期的返回值或结果,而是需要在将来通过一定的手段得到

3、 任务队列(消息队列、事件队列、总而言之是和异步任务相关的队列)

队列特点就是先进先出的数据结构,和排队一样,哪个异步任务完成的早,就排在最前面。无论异步操作是何时开始执行,只要异步操作执行完成,就可以进入任务队列排队

4、 事件循环(event loop)

js调控同步和异步任务的机制称为事件循环

(主线程任务全部执行完之后,任务队列中的回调函数会再次回到调用栈中执行,俗称事件循环。)

4.1 详细过程

(1) 所有的同步代码都在主线程上调用,形成了一个执行栈

(2) 除了执行栈,还会有一个”任务队列“。只要异步操作执行完成,就到任务队列排队

(3) 一旦执行栈的所有代码执行完毕,系统就会读取任务队列里的异步任务,被读取的异步任务结束等待状态,进栈和出栈

(4) 主线程不断的重复上面的三个步骤(Event loop)(重复获取信息、执行信息、再获取信息、再执行...)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值