1.js是单线程
JavaScript最大得特点就是单线程,也就是说,同一事件只能去做一件事情
单线程就意味着任务需要排序,前一个任务结束,才会执行下一个任务,导致js执行时间过长,这样会造成页面渲染不连贯,导致页面渲染加载阻塞
1.1.同步与异步
为了解决单线程问题,利用cpu多核计算性能,HTML5提出了web Worker标准,允许JavaScript创建多个线程,于是,js中出现了同步和异步
同步:前一个任务结束后,才去执行下一个任务,程序得执行顺序,与任务排序得顺序一致
异步:前一个任务执行中,我们可以去执行下一个任务
1.2同步与异步
js执行任务时,为分为两个空间,同步任务放在主线程执行栈上,异步任务放在任务队列当中(任务队列也称为消息队列)。
常见得异步执行任务有
一半异步任务分为以下三类
- 普通时间 onclick resize等
- 资源加载 如onload error 等
- 定时器 setInterval setTimeout 等
JavaScript事件执行机制
1.先执行主线程执行站中得**同步**任务
2.异步任务(回调函数)放入执行栈中
3.执行栈中得**同步任务**执行完毕时,系统就会按照任务队列依次读取**异步任务**,被读取得异步任务结束等待状态,进入执行栈,开始执行。