# Event Loop
- js 是 单线程运行的
- 异步要基于回调来实现
- event loop 就是异步回调的实现原理
console.log('hi')
setTimeout(function cb1() {
console.log('cb1')
})
console.log('Bye')
总结 Event loop 过程
- 同步代码,一行一行放在 Call Stack 执行
- 遇到异步,会先“记录下”,等待时机(定时、网络请求等)
- 时机到了,就移动到 Callback Queue
- 如果 CallStack 为空(即同步代码执行完毕),eventloop 开始工作
- 轮询查找callback Queue,如有则移动到Call Stack 执行
- 然后继续轮询查找(就像永动机一样)
# DOM事件和event loop
<button id="btn1">提交</button>
<Script>
console.log('hi')
$('#btn1').click(function(e) {
console.log('button clicked')
})
console.log('bye')
</script>
- JS 是单线程的
- 异步(setTimeout,ajax 等使用回调),基于eventloop
- DOM 事件也使用回调,基于 Event loop
- DOM事件不是异步
← 异步和单线程 promise 进阶 →