js事件循环机制

352 阅读1分钟

js 事件循环

js 是单线程执行的,js 在执行的时候会阻止ui渲染,因为js会操作dom, 像ui渲染和js执行这2个线程就是互斥的。

任务队列

因为js 单线程的原因,只要指定过回调函数的事件,这些事件发生时就会进入"任务队列",等待主线程读取。

执行栈

执行栈是专门存储函数调用的栈结构,遵循先进后出的原则 执行任务队列中的某一个任务,这个被执行的任务-------执行栈

主线程

主线程规定了,现在开始执行 执行栈中的哪一个事件 主线程会一直不停的从任务栈中读取事件,直到执行完所有的同步代码 当主线程遇到了一个异步事件,是不会一直等待的,主线程会把这个异步事件放入异步队列

当主线程把执行栈中的同步任务执行完了,就会去任务队列中,查看那些异步任务,结束了等待状态,就把这些任务放入到执行栈中,开始执行。

事件循环

主线程从任务队列中读取事件,这个过程是循环不断的,所以叫做 事件循环