NodeJS事件循环如何工作?

对于下面的代码,

var fs = require('fs'); fs.watch('target.txt', function(event, fileName){ console.log('Event: ' + event + ', for file: ' + fileName); }); Console.log('Now watching target.txt'); 

根据以下架构,

1) fs.watch()将调用libuvlibuv将启动一个线程来跟踪target.txt上的change事件。 libuv的结果将通过带有数据缓冲区的callbackforms通过NodeJS Bindings进入v8

2) libuv在事件队列中添加change事件。 当事件循环selectchange事件时,在v8运行时执行相应的callback。

在这里输入图像说明

我的理解是正确的吗?

不,你误解了。 NodeJS没有线程,而是使用Observer模式的单线程。 事件循环等待事件发生(观察事件)。 当一个事件发生时,它会调用它的处理程序。 multithreading方法的错觉来自于Node经常使用asynchronous事件,定义在给定任务完成时要执行的callback函数。 在这里阅读更多。

这篇文章详细解释了事件循环

https://nodesource.com/blog/understanding-the-nodejs-event-loop/

它提供了整个过程的机械概览