- 开始,任务先进入 Call Stack
- 同步任务直接在栈中等待被执行,异步任务从 Call Stack 移入到 Event Table 注册
- 当对应的事件触发(或延迟到指定时间),Event Table 会将事件回调函数移入 Event Queue 等待
- 当 Call Stack 中没有任务,就从 Event Queue 中拿出一个任务放入 Call Stack
而 Event Loop 指的就是这一整个圈圈:
它不停检查 Call Stack 中是否有任务(也叫栈帧)需要执行,如果没有,就检查 Event Queue,从中弹出一个任务,放入 Call Stack 中,如此往复循环。