对 JS 事件循环(Event Loop)的理解
理解
Call Stack
调用栈;
Callback Queue
(也叫 Task Queue
) 回调队列
也叫 任务队列
;
Web Apis
浏览器提供的一些方法。(如 setTimeout
, DOM
的 click
等 );
JavaScript
执行代码是 只会从 Call Stack
栈中执行;
Web Apis
是浏览器(Node) 提供的一些 api
,(如 setTimeout
, DOM
的 click
等),
当 运行 setTiemout(cb, 1000)
, setTiemout
会在 放到 栈
中,它会向 WebApis
提交 timer
。让 WebApis
去执行,具体的倒计时,
Web Apis
发现一个 callback
到了 要执行的 时候,会把它放到 任务队列(回调队列)
中去;
EventLoop
的职责 是 观察 Call Stack
(调用栈) 中是否已空,如果空了,就从 任务队列中 取出一个,放到 栈 中去执行;
就这样循环下去。。。
参考
YouTube 视频,需要FQ