事件循环(轮询)机制
- js是单线程的
所有js代码
都是在主线程
执行的- 同步任务进入主线程即会执行
- 异步任务则会进入浏览器的管理模块 (有DOM事件管理模块、ajax请求管理模块、定时器管理模块等)
- 管理模块一直监视异步任务是否满足条件。如果满足条件则会将对应的回调放入
回调队列中(callback queue)
- 主线程的同步任务执行完后会通过
event loop(事件轮询机制)
询问callback queue:- 如果回调队列中有可执行的回调函数,则将会回调
钩到
主线程上执行。 - 如果没有则loop
- 如果回调队列中有可执行的回调函数,则将会回调
- 对于定时器管理模块。对于定时器函数,会在管理模块中就进行计时。到达条件后就会提前放入回调队列,等到主线程的任务一执行完后,就会立马执行。