JS执行机制
1.将执行任务分为同步任务和异步任务
2.先执行执行栈中的同步任务
3.异步任务(回调函数)放入任务队列中
4.一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行。
同步任务: 同步任务都在主线程上执行,形成一个执行栈
异步任务:JS的异步是通过回调函数实现的,一般有以下三种类型
- 普通事件,如click、resize等
- 资源加载,如load、error等
- 定时器,包括setInterval、setTimeout等
异步任务相关回调函数添加到任务队列(消息队列)中
console.log(1);
setTimeout(function () {
console.log(3);
}, 0);
console.log(2);
//打印输出结果为 123
由于主线程不断的重复获得任务、执行任务、再获取任务、再执行、所以这种机制被成为事件循环