JavaScript异步编程原理分析、EventLoop事件循环机制

EventLoop是JavaScript中处理单线程运行和避免阻塞的一种机制,它利用异步执行来优化性能。当遇到异步操作如定时器、事件或Ajax请求时,这些任务会被放入事件队列,待主线程空闲时执行。宏任务包括整体脚本、定时器和I/O,而微任务如Promise回调和process.nextTick则在当前宏任务结束后、下一个宏任务开始前执行。
摘要由CSDN通过智能技术生成

EventLoop事件循环机制

指浏览器或node中一种解决JavaScript单线程运行时不会阻塞的一种机制,即使用异步的原理

javascript中有一个main thread主线程和call-stack调用栈;所有的任务都会被放到调用栈等待主线程执行

浏览器运行JavaScript的环境是单线程的,同时只能做一件事情;浏览器本身是多进程、多线程的。

1. js运行是单线程的

2.引入事件队列机制,防止阻塞影响性能

3.如果单线程的代码执行过程中遇到异步场景,会放入事件队列,而后继续执行后续代码

4.常见的异步场景

a. 定时函数(满足延时时间)

b.事件函数(特定事件触发)

c.Ajax回调函数(服务器返回数据时触发)

5.进入队列的任务执行时机

a.主线程必须空闲

b.队列中任务需要满足特定的触发条件

6.宏任务、微任务

a.宏任务:进入浏览器事件队列的任务

b.微任务:不仅如此浏览器事件队列,但进入微任务队列的任务

7.常见的宏任务、微任务

a.宏任务(task):script(整体代码)、setTimeout、setInterval、serImmediate、I/O、ui

rendering

b.微任务(jobs):process.nextTick(node中)、Promise.then(非 new Promise)、MutationObserve(html5新特性)

8.微任务执行时机:主线程完成运行之后,当前宏任务结束之前

9.微任务进入队列时机(resolve触发时)

9.代码执行优先级:主线程=>微任务=>宏任务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值