NodeJS事件循环如何工作?

时间:2016-05-05 12:49:02

标签: javascript node.js event-loop

对于以下代码,

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会在change上启动跟踪target.txt事件的主题。 libuv的结果将以v8再次通过NodeJS Bindings以回调的形式传递给具有数据的缓冲区。

2)libuv在事件队列中添加change事件。当事件循环选择change事件时,相应的回调将在v8运行时执行。

enter image description here

我的理解是否正确?

2 个答案:

答案 0 :(得分:1)

不,你误会了。 NodeJS没有线程,而是单线程,使用Observer Pattern。事件循环等待事件发生(观察事件)。发生事件时,它会调用其处理程序。多线程方法的错觉来自于Node经常使用异步事件,定义在给定任务完成时要执行的回调函数。阅读更多here

答案 1 :(得分:1)

本文详细解释了事件循环

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

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