Blocking(阻塞)操作同步运行,会占用唯一的 JavaScript 线程直到完成——在此期间其他任何东西都无法运行。Non-blocking(非阻塞)操作启动工作后立即返回,稍后通过 callback、Promise 或 event 交付结果,因此线程可以腾出来做其他事情。
为什么 Node 是单线程却又非阻塞
你的 JavaScript 运行在由 驱动的线程上。I/O(文件、网络、DNS)被委托给 ,它在底层使用操作系统的异步机制和一个小的 。当那部分工作在线程之外进行时,event loop 会继续处理其他 callback。当 I/O 完成时,其 callback 会被排入队列并运行。
