javascript - NodeJS 事件循环是如何工作的?

标签 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 将启动一个线程来跟踪 target.txt 上的 change 事件。 libuv 的结果将转到 v8,然后以带有数据缓冲区的回调形式再次通过 NodeJS Bindings

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

enter image description here

我的理解正确吗?

最佳答案

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

关于javascript - NodeJS 事件循环是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37051076/

相关文章:

javascript - js while(true){} 阻塞事件循环

javascript - Promise .then 链 'Cannot set property of undifined'

javascript - 如何内联IMG SRC数据:image Be Transferred With JavaScript to PHP?

node.js - 我如何检测具有上下文的意图? (Dialogflow API V2 的 Node.js SDK)

libevent - CentOS下编译libev(dev)

javascript - js 事件循环是否意味着您可以使用全局变量作为临时暂存空间?

javascript - 有没有办法按国家对谷歌地图标记进行聚类?

javaScript、jQuery - 如何将时间戳转换为日期格式,如 Jan 2 或 Jan 26?

node.js - 安装 Yeoman Angular 依赖项时遇到问题

node.js - PM2环境变量缓存