js 事件循环
js 是单线程执行的,js 在执行的时候会阻止ui渲染,因为js会操作dom, 像ui渲染和js执行这2个线程就是互斥的。
任务队列
因为js 单线程的原因,只要指定过回调函数的事件,这些事件发生时就会进入"任务队列",等待主线程读取。
执行栈
执行栈是专门存储函数调用的栈结构,遵循先进后出的原则 执行任务队列中的某一个任务,这个被执行的任务-------执行栈
主线程
主线程规定了,现在开始执行 执行栈中的哪一个事件 主线程会一直不停的从任务栈中读取事件,直到执行完所有的同步代码 当主线程遇到了一个异步事件,是不会一直等待的,主线程会把这个异步事件放入异步队列
当主线程把执行栈中的同步任务执行完了,就会去任务队列中,查看那些异步任务,结束了等待状态,就把这些任务放入到执行栈中,开始执行。
事件循环
主线程从任务队列中读取事件,这个过程是循环不断的,所以叫做 事件循环