JS执行机制
1、讲执行机制之前,我们应该先了解什么是JS中的同步和异步
- 同步:上一个任务完成才能进入下一个任务
- 异步:两个或者多个任务可以并行执行
同步任务:都放在主线程的执行栈
异步任务:JS的异步是通过回调函数实现的
异步任务的三种类型:
- 普通事件,如
click
、resize
等等 - 资源加载,如
load
、error
等 - 定时器,包括
setInterval
、setTimeout
等
异步任务相关的回调函数
添加到任务队列
中(任务队列也称为消息队列)
执行机制
1、先执行执行栈中的同步任务
2、异步任务(回调函数)放入异步任务队列
3、一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列的异步任务,异步任务结束等待,进入执行栈执行
总结:JS执行会先执行我们主线程的同步任务,中途遇见异步任务会通知异步进程,此时不会造成堵塞,同步任务继续执行,当同步任务执行完毕,主线程会监听异步队列,一旦异步队列有异步任务就拿过来执行。异步进程是用来维护异步任务,一旦异步任务达到执行条件就把异步任务给异步队列,然后主线程就监听到拿过来执行