**这些是在单个线程上表达非阻塞工作的一系列越来越好用的方式,其底层都由一个事件循环驱动,该循环每次运行一个就绪的回调。**它们管理的是代码何时恢复,而不是多个线程。
事件循环
一个单线程的循环维护着一个就绪回调的队列。当一个异步操作(定时器、I/O)完成时,它的回调被入队;循环取出下一个并运行它直到完成,然后重复。没有任何东西能抢占正在运行的回调,所以长时间的 CPU 工作会阻塞一切。
text
[事件循环] → 运行回调 → I/O 完成 → 回调入队 → 运行下一个 → ...
三种风格
js
(, (, (a, b)));
().( ()).( ...).( ...);
() {
a = ();
b = ();
(a, b);
}
