js--原理(事件循环)

浏览器主要进程

        1.浏览器进程:主要负责浏览器全局功能显示、用户交互、子进程管理。后续浏览器会内部启动多个进程处理不同的任务

        2.网络进程:负责加载网络资源。内部有多个进程处理不同网络任务。

        3.渲染进程:浏览器启动后,会开启渲染进程,负责运行html、css、js等任务;默认情况下,浏览器的没一个标签页都有一个独立的渲染进程,保证页面之间互不影响。

        包括:解析html、解析css、计算布局、处理图层、页面刷新(帧率)、全局js、事件函数处理、处理计时器等异步函数......

        (面试题)-----如何理解js的异步?

                     js是单线程的语言,运行在浏览器的渲染进程中,浏览器只有一个渲染主进程,它需要执行很多的‘工作’,执行js、更新页面等,如果使用同步的方式,遇到一些耗时的任务,比如计时器等,它就需要等待任务完成才能继续执行下一个任务,这样非常的耗时,可能会使页面卡顿。

        所以使用了异步的方式来解决这个问题。具体做法就是当某些任务发生时,计时器、网络、事件监听,主线程将这些任务交给其他线程去完成,自身立即结束当前任务,执行后续的任务。单其他线程完成时,将任务完成后的执行函数包装成任务,加入到主线程的消息队列末尾,等待主线程的调度。保证主线程永不阻塞。

        (面试题)-----阐述一下js的事件循环。

                事件循环也是消息循环,浏览器渲染主线程的工作方式。

                在chrome浏览器中,开启了一个不会结束的循环,每次循环都从消息队列中取出发一个任务执行,其他任务只能从末尾加入。

        w3c中,同一类型的任务只能在同一个队列中,不同的任务可以在不同的队列中。不同队列有不同的优先级,在每次循环中,由浏览器决定取哪个队列的任务,浏览器有一个微队列,优先级是最高的,也就是浏览器渲染主线程取任务优先从微队列中取。

## 单线程是异步产生的原因,事件循环异步的实现方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值