繁体   English   中英

NodeJS 事件循环如何工作?

[英]How NodeJS event loop works?

对于下面的代码,

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()将调用libuv libuv将启动一个线程来跟踪target.txt上的change事件。 libuv的结果将以回调的形式通过NodeJS Bindings进入v8并再次通过带有数据的缓冲区。

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

在此处输入图片说明

我的理解正确吗?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM