Node.js - 单线程,非阻塞?

Mat*_*vid 15 javascript nonblocking node.js

我正在学习Node.js,我已经读过Node.js是单线程和非阻塞的.

我有一个良好的JavaScript背景,我确实理解回调,但我真正不了解的是Node.js如何可以单线程并在后台运行代码.这不矛盾吗?

因为如果Node.js是单线程的,那么它仍然只能执行一个任务.因此,如果它在后台运行某些东西,它必须停止当前任务在后台处理某些东西,对吗?

这实际上是如何工作的?

小智 10

对于NodeJS来说,"在后台"的真正意义在于,事情可以放在待办事项清单上以供日后使用.每当Node完成它正在做的事情时,它就从todo列表的顶部选择.这就是为什么做任何实际阻塞的事情都会破坏你的一天."在后台"发生的所有事情(实际上只是在todo列表上等待)都会停止,直到阻塞任务完成.