事件循环

61 阅读1分钟

前因后果都是浏览器相关的

浏览器的进程模型

1、进程

程序运行需要内存空间,这个空间就是进程

每个应用至少有一个进程,进程之间独立,要通信需要双方同意。

2、线程

一个进程启动后,自动创建一个线程来运行代码,这个线程叫主线程。如果主线程结束,进程就结束了 。如果主线程忙不过来,它就会启动更多的线程来帮忙

浏览器是一个多线程多进程的程序

主要是浏览器进程(主)、网络进程、渲染进程、cpu等进程

image.png

渲染进程

启动后会开启一个主线程,去执行页面渲染,css、js、html 事件循环发生在 渲染主线程

image.png

image.png

同步流程

image.png

异步(永不阻塞)

image.png

如何理解js的异步

image.png 解释:为啥同步可能会阻塞:以为如果都是同步代码的话,不会阻塞。如果包含异步代码比如,setTimeout时,会造成阻塞。

js为何会阻碍渲染 渲染和执行js都在渲染主线程上执行

任务不存在优先级,在消息队列里面:先进先出 但消息队列有优先级 image.png

面试题(事件循环的回答)

image.png

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