当前位置: 首页 > news >正文

网站内的地图导航怎么做/河南最近的热搜事件

网站内的地图导航怎么做,河南最近的热搜事件,高新园区规划建设局网站,房子装修设计网介绍 在读这篇博客之前,我强列建议先阅读我的前两篇文章: Getting Started With Node.jsNode.js - Modules 在这篇文章中,我们将学习 Node.js 中的事件循环(event loop)。我们还将了解 Node.js 的代码执行过程。在我第…

介绍

在读这篇博客之前,我强列建议先阅读我的前两篇文章:

  • Getting Started With Node.js
  • Node.js - Modules

    在这篇文章中,我们将学习 Node.js 中的事件循环(event loop)。我们还将了解 Node.js 的代码执行过程。在我第一篇文章中我告诉大家 Node.js 是一个单线程的应用程序。因为 Node.js 运行的是 JavaScript,然而 JavaScript 是不支持多线程的,所以 Node.js 也不支持多线程。但是 Node.js 使用事件和回调(event and callbacks)的概念可以支持并发。这一切归咎都是事件循环(event loop)的功劳。

事件循环(event loop)的工作机制

在 Getting Started With Node.js 这篇文章中我们已经了解了 Node.js 的架构,其中我们还讨论了 Node.js 的两个主要组件:Google's V8 引擎 和 Libuv。其中事件循环(event loop)是用 C 和 C++ 编写的 Libuv 的一部分。
此处输入图片的描述
上图是 Node.js 的执行过程,让我们来一步一步理解它。

  1. 每当请求进入 Node.js 的 API 时将会被添加到事件循环(event loop)的队列,因为 Node.js 不能同时处理多个请求。所以,所有的请求进来后将会被添加到事件队列里面。
  2. 现在,你可以在上图中看到一个循环,它总是检查事件或请求是否在事件队列中可用。如果有任何请求可用,那么根据队列的“先进先出”的特性,该请求将会被处理。
  3. Node.js 的事件循环(event loop)是单线程执行的非阻塞 I/O 任务。它将请求发送到 C++ 内部线程池(thread pool),里面可以运行大量的线程任务。这个内部 C++ 线程池(thread pool)是 Libev 组件中开发的事件循环(event loop)的一部分,它可以处理多个请求。事件循环一直检查事件队列中是否存在任务,如果有并且阻塞进程存在,将会有线程池来处理。
  4. 现在,内部线程池(thread pool)可以处理很多请求,就像对数据库请求,对文件的操作等等。
  5. 每当有线程完成任务,将会调用回调函数(callback function),并将响应结果发送回事件循环(event loop)。
  6. 事件循环将响应发送回请求客户端完成一次请求处理。

示例

下面的示例将会展示事件循环(event loop)的工作机制:

var fs = require('fs');  
var i = 1;  
fs.watch("file.txt", function (event, filename) {  var EventId = "#" + i;  var EventName = " Event: " + event;  var FileName = " FileName: " + filename;  var Time = " Time: " + new Date();  var data = EventId.concat(EventName, FileName, Time, "\n");  console.log(data);  i++;  
});  
console.log("Now we are watching file.txt\n");  

在上面的示例中,第一行加载了 fs 模块用于操作文件系统,并且定义了一个变量 i 来做为计数器。然后使用 fs.watch() 方法来监视 file.txt 文件。这个监视方法的回调函数的参数包含了事件(event)和文件名(filename)。所以,每当文件有变化,这个回调函数将会被调用,并将日志打印到控制台上面。我们将上面的代码保存为 app.js
注:我的 file.txt 文件和 app.js 在同一个目录,我的文件结构如下图如示:
此处输入图片的描述
现在,我们运行程序,并修改这个 file.txt 文件。当我们保存后,将会看到下面的输出日志:
此处输入图片的描述
上面的结果显示,当 file.txt 发生任何变化,fs.watch() 的回调函数将会在事件循环(event loop)中被调用,并且事件循环(event loop)将会一直检查文件是否发生了变化。你还可以使用下面的代码将该事件信息记录在一个文件中:

var fs = require('fs');  
fs.writeFile('log.txt', '', function (err) {  if (err) throw err;  console.log('File Saved Successfully!');  
});  
var i = 0;  
fs.watch("target.txt", function (event, filename) {  var EventId = "#" + i;  var EventName = " Event: " + event;  var FileName = " FileName: " + filename;  var Time = " Time: " + new Date();  var data = EventId.concat(EventName, FileName, Time,"\n");  fs.appendFile('log.txt', data, function (err) {  if (err) {  console.log(err);  }  });  i++;  
});  

好了,我希望这篇文章对你有帮助。谢谢!

译:http://www.c-sharpcorner.com/article/node-js-event-loop/

http://www.jmfq.cn/news/4949317.html

相关文章:

  • 做网站还有流量么/宁波网站关键词优化公司
  • 女装网站模板/新东方在线教育平台官网
  • 易企cms/论坛优化seo
  • 游戏软件开发需要多少钱/成都高新seo
  • 专做排版网站/电商网址
  • 牛商网做网站/长沙大型网站建设公司
  • 做网站后台应该谁来做/巨量算数
  • 聊城网站开发/百度站长平台提交网站
  • wordpress查看error/市场seo是什么意思
  • 服务器如何限制每个网站的空间使用大小/磁力宅在线搜种子
  • 多语种网站怎么做搜索引擎排名/免费seo关键词优化服务
  • 做家政有专门的网站吗/新闻头条最新消息摘抄
  • 网站开发项目答辩主持词/优化设计三要素
  • 网站支付页面怎么做/百度账号客服24小时人工电话
  • 可视化建站源码/整站seo优化哪家好
  • 建筑公司网站源码/北京优化网站公司
  • 响应式制作网站建设/微信引流的十个方法
  • 做内容网站好累/东莞百度快照优化排名
  • 离石网站建设公司/宁波专业seo外包
  • 新民电子网站建设哪家好/武汉网站推广排名
  • 个人网站制作网站/国外搜索引擎大全百鸣
  • 网站结构合理/网盘搜索
  • 怎样才能把网站宣传做的更好/做网销的一天都在干嘛
  • 湖南建站网站/网络推广免费网站
  • 网站有哪些后台/推广网络广告
  • 加快wordpress图片的插件/惠州seo快速排名
  • 怎么建立网站赚钱/专业网络推广公司排名
  • 一块钱购物网站/深圳抖音推广公司
  • 自己电脑做网站服务器违法吗/重庆森林壁纸
  • 建设领域行政处罚查询网站/自动引流免费app