相关疑难解决方法(0)

Node.js中的单线程和事件循环

首先,我是尝试了解什么是Node.Js. 我有两个问题.

第一个问题
从Felix 的文章中,它说"在同一时间只能有一个回调触发.在回调完成执行之前,所有其他回调都必须排队".

然后,考虑以下代码(从nodejs官方网站复制)

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8124, "127.0.0.1");
Run Code Online (Sandbox Code Playgroud)

如果同时收到两个客户端请求,则表示以下工作流程:

  1. 收到第一个http请求事件,收到第二个请求事件.
  2. 收到第一个事件后,第一个事件的回调函数正在执行.
  3. 同时,第二个事件的回调函数必须等待.

我对吗?如果我是对的,如果在很短的时间内有数千个客户端请求,Node.js如何控制.

第二个问题
术语"事件循环"主要用于Node.js主题.我已经明白"事件循环"从下面的http://www.wisegeek.com/what-is-an-event-loop.htm ;

事件循环 - 或主循环,是程序中的一个构造,用于控制和分派初始事件后的事件.

初始事件可以是任何东西,包括按下键盘上的按钮或单击程序上的按钮(在Node.js中,我认为初始事件将是http请求,数据库查询或I/O文件访问).

这称为循环,不是因为事件循环并且连续发生,而是因为循环准备事件,检查事件,调度事件并重新重复该过程.

我对第二段有冲突,特别是" 重复这个过程 "这句话.我接受上面的问题上面的http.createServer代码绝对是"事件循环",因为它反复监听http请求事件.

但我不知道如何识别以下代码,无论是事件驱动还是事件循环.除了在db查询完成后触发的回调函数之外,它不会重复任何操作.

database.query("SELECT * FROM table", function(rows) {
  var result = rows;
});
Run Code Online (Sandbox Code Playgroud)

请让我听听你的意见和答案.

event-loop node.js

11
推荐指数
1
解决办法
3481
查看次数

标签 统计

event-loop ×1

node.js ×1