js 单线程
alert 函数不仅会暂停主线程,而且会暂停定时器
定时器回调函数只有在运行栈中的初始化代码全部执行完后才有可能执行(定时器并不能保证定时执行)
事件轮询机制
- 执行上下文栈(同步):
- 初始化代码,将定时器,DOM 事件,ajax 请求交给浏览器对应模块管理
- 当事件发生时,浏览器管理模块将回调函数添加到任务队列中
- 任务队列(异步):
- 微任务:Promise.then,process.nextTick
- 宏任务:setTimeout,setInterval,DOM事件,ajax