js中的事件循环

在JavaScript中,事件循环(Event Loop)是一个处理异步行为的主要机制。由于JavaScript是单线程的,所以一次只能处理一件事情。为了能在处理一个任务的时候不阻塞其他任务,JavaScript采用了异步编程模式。

事件循环的工作方式可以大致描述如下:

  1. 调用栈:JavaScript引擎有一个叫做"调用栈"(Call Stack)的结构,用来追踪函数调用的层次。当一个函数被调用时,它就被添加到调用栈的顶部。当这个函数返回时,它就从调用栈中移除。
  2. 任务队列:当一些异步操作(比如定时器、网络请求、用户输入等)完成时,它们的回调函数会被添加到"任务队列"(Task Queue)中。
  3. 事件循环:当调用栈为空时,事件循环会从任务队列中取出一个任务(也就是一个函数),然后把这个任务放到调用栈中执行。这个过程会一直重复,形成一个"循环",这就是所谓的"事件循环"。

值得注意的是,JavaScript中有两种类型的任务队列:宏任务队列(MacroTask Queue)和微任务队列(MicroTask Queue)。宏任务包括:script(全体代码)、setTimeout、setInterval、setImmediate、I/O、UI渲染等。微任务包括:Promise.then/catch/finally、MutationObserver等。执行顺序是先执行宏任务,然后执行微任务,然后在执行宏任务,以此类推。在每一个宏任务执行完后,会立刻执行当前所有的微任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值