NodeJS:当调用异步函数时,谁执行异步工作?

3
我将用示例来解释我的问题。
请看以下内容:
fs.readFile('somefilename', function(err, data) {
    ...doSomething...
});

当执行这行代码时,readFile将开始读取文件。无论成功或失败,该回调函数都会被推入队列以便在适当的参数下执行。
文件的读取是以异步方式进行的,但如果NodeJS是单线程、非阻塞的,那么谁在进行读取呢?

1
异步编程并不一定意味着多线程。 - Derek Pollard
2
我认为环境(在这种情况下是node.js)可以是多线程的。只有JavaScript代码是单线程的。 - MinusFour
@OliverQueen 好的。我的问题是如何在读取文件的同时运行以下代码。 - Majeed Siddiqui
2个回答

4

0

Node.js是一个事件驱动的服务器。但这并不意味着它使用多线程。

由于是事件驱动的,Node.js可以同时处理多个请求。基本上,当它接收到一个请求时,Node.js启动其执行。在执行过程中,如果Node.js接收到另一个请求,它将启动其执行。以此类推。当第一个请求完成执行并且结果可用时,它会触发一个事件通知Node.js该请求已完成,然后Node.js发送回请求结果。

更多信息可以在Node.js网站上找到,甚至可以在这里找到更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接