谈谈你是如何理解 JS 异步编程的,EventLoop、消息队列都是做什么的,什么是宏任务,什么是微任务?

  1. JS 异步编程

    JS 是单线程模式工作的(一个时间内只能做一件事),当有较多任务的情况下,任务需要依次排队等待完成,如果遇到某一个或几个任务很耗时的情况就会给用户一种假死的状态,极大地降低了体验效果。为了解决这个问题,提出了异步的工作模式,即不会等待任务的执行,开启任务后立即往后执行下一个任务,耗时任务结束后会自动调用执行传入的回调函数

  2. EventLoop

    单线程意味着所有的任务必须排队依次执行,JS 的任务分为同步任务和异步任务,同步任务会进入主线程中依次执行,遇到异步任务则会将其放入消息队列中等待执行,当主线程任务执行完之后,执行栈清空,事件触发器会从消息队列中取出一个任务继续执行,执行完毕之后执行栈继续清空,然后重复执行上一步操作,直到全部执行完毕,这个机制称为 EventLoop

  3. 消息队列

    消息队列用来处理异步任务。每当遇到异步调用事件都会将其放入队列中,执行完毕后由任务队列通知主线程,执行事件

  4. 宏任务 & 微任务

    有一个大爷去银行存款,排队等到他去存款的时候突然想要开通手机银行,这时候银行柜员会优先完成大爷的需求再开始其他人的业务。

    大爷去存款:宏任务

    大爷要开通手机银行: 微任务

    在当前的微任务没有执行完成时,是不会执行下一个宏任务的。

    常见的宏任务: setTimeout, setInterval…

    常见的微任务: promise.then, process.nextTick

相关文档:https://blog.csdn.net/baidu_33591715/article/details/114251417?spm=1001.2014.3001.5501

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值