因此,客户端javascript中的异步编程是setTimeOut在浏览器API中运行,因此它不会阻止javascript单线程。由于Node中没有浏览器API,谁来运行代码的异步部分?是C还是C ++?
答案 0 :(得分:1)
首先,node.js由一个运行时环境和一个库组成,该运行时环境包括V8 Javascript引擎,一个包含事件循环的跨平台库(用C / C ++编写)(包括事件循环),该库又名为libuv
充满了各种附加功能,这些附加功能不是用于进行联网,加密,文件系统访问等的标准Javascript定义的一部分。这些库函数中有许多是用Javascript和C ++组合编写的。
node.js中的异步操作全部来自用C / C ++编写的nodejs运行时库。其中包括各种内容,例如setTimeout()
,用于访问文件的整个fs
库,用于进行网络连接的net
库,等等。