node事件循环是什么?菜鸟教程_循环入门基础

node事件循环是Node.js处理非阻塞 I/O 操作的机制—尽管JavaScript是单线程处理的—当有可能的时候,它们会把操作转移到系统内核中去。Node.js 事件循环Node.js 是单进程单线程应用程序,但是因为V8引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。Node.js 几乎每一个 API 都是支持回调函数的。

node事件循环是什么?菜鸟教程

node事件循环是Node.js处理非阻塞 I/O 操作的机制—尽管JavaScript是单线程处理的—当有可能的时候,它们会把操作转移到系统内核中去。

node事件循环是什么?菜鸟教程_循环入门基础

Node.js 事件循环

Node.js 是单进程单线程应用程序,但是因为V8引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。

Node.js 几乎每一个 API 都是支持回调函数的。

Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。

Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数.

事件驱动程序

Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。

当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。

这个模型非常高效可扩展性非常强,因为webserver一直接受请求而不等待任何读写操作。(这也被称之为非阻塞式IO或者事件驱动IO)

在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。

node事件循环是什么?菜鸟教程_循环入门基础

整个事件驱动的流程就是这么实现的,非常简洁。有点类似于观察者模式,事件相当于一个主题(Subject),而所有注册到这个事件上的处理函数相当于观察者(Observer)。

Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例:

// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();

以下程序绑定事件处理程序:

// 绑定事件及事件的处理程序
eventEmitter.on('eventName', eventHandler);

我们可以通过程序触发事件:

// 触发事件
eventEmitter.emit('eventName');
海计划公众号
(0)
上一篇 2020/03/31 01:53
下一篇 2020/03/31 01:53

您可能感兴趣的内容

  • Gliffy入门攻略_一款超好用的在线图表绘制工具

    Gliffy小白帮助 官方网址:https://www.gliffy.com/ 简介描述:一款超好用的在线图表绘制工具 Gliffy是一款超好用的在线图表绘制工具,支持Chrome…

    2020/03/06
  • circles使用教程_基于HTML5 SVG的轻量级Js圆形进度条插件

    circles使用教程 官方网址:https://www.lugolabs.com/circles GitHub:https://github.com/lugolabs/circl…

    2020/03/11
  • 值得你收藏的10个CSS3动画工具菜鸟教程网_动画小白攻略

    人类对于运动的食物往往会投入更多的关注,因此巧妙的使用动画能够极大地提升网站的用户体验,快速唤起用户对重要元素的关注。在CSS3中引入了全新的动画语法,它能够帮助你在设计中实现许多有趣的事情。通常构建炫酷的动画是非常复杂和费时的,而使用动画库和生成器则可以帮助你完美处理这一切。在这篇文章中我们将推荐十款出色的工具,它们可以帮助你更快更轻松地完成自己的动画。1

    2020/03/29
  • Freebiesbug小白帮助_免费优质的网页设计资源

    Freebiesbug小白帮助 官方网址:https://freebiesbug.com/ 简介描述:免费优质的网页设计资源 Freebiesbug搜集了许多免费优质的网页设计资源…

    2020/03/10
  • jQuery.NumPad新手入门一款移动端友好的jQuery数字键盘插件

    jQuery.NumPad基础入门 官方网址:http://a.kabachnik.info/jquery-numpad.html GitHub:https://github.co…

    2020/03/05
  • React 基础知识 es6使用双向锚点,动态生成,也适用单页面路由项目菜鸟教程网_项目

    场景React页面中,不确定有多少个需要定位的块,根据元素块的个数,生成对应数量的锚点,点击锚点后页面滚动到指定的块。 页面滚动到指定的块,对应的锚点高亮。github地址:https://github.com/fyxwanan/author-demo锚点超链接的一种形式,快速定位到想要看的位置,常用在文章目录等位置。实现dom元素方面// dom
    <div

    2020/03/24
  • 5118教程视频_关键词、长尾词挖掘工具

    5118教程视频 官方网址:https://www.5118.com/ 简介描述:关键词、长尾词挖掘工具 5118通过对SEO各类大数据挖掘,提供关键词挖掘,行业词库,站群权重监控…

    2020/03/06
  • vue-awesome-swiper小白攻略_基于swiper、Vue.js 的 Swiper 组件

    vue-awesome-swiper小白攻略 官方网址:https://surmon-china.github.io/vue-awesome-swiper/ GitHub:http…

    2020/03/06
  • 用VPN得小心了,一程序员非法出售 VPN 被判刑三年!小白指南_vpn入门教程

    近日,上海市宝山区人民法院审理了一起案件,被告人戴某原在某证券管理公司从事软件开发工作。自 2016 年 4 月起,其为牟取非法利益,创建某网站,并在网站上出售 VPN 翻墙软件的账户。同时租用境外服务商的多台服务器,向所出售的账户提供可以访问国内 IP 不能访问的外国网站服务。戴某于 2017 年 10 月 10 日被抓获,截至 2017 年 10 月案发

    2020/04/03
  • JS算法题之两数之和使用指南_算法题入门基础

    题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。示例给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解答这题不难,遍历nums,用targer减去当前元素,得到的元素

    2020/03/29
  • 浏览器显示“网站连接不安全”,是什么原因?使用说明_安全基础知识

    Chrome 浏览器显示“网站连接不安全”,这可能是您最近访问网站时经常遇到的问题,浏览器地址栏中域名前面显示圆圈i图标和“不安全”字样,点击这个字样,就会看到红字警告“你与此网站之间建立的连接不安全”,这是怎么回事?这样的网站可以继续访问吗?Chrome 浏览器显示“网站连接不安全”的原因“你与此网站之间建立的连接不安全”这是浏览器对HTTP网站的警告提示

    2020/03/29
  • webpack 阶段回顾 之 webpack-dev-server小白教程_webpack小白知识

    webpack-dev-server是一个让我们可以模拟线上环境进行项目调试的工具主要功能有:路径重定向浏览器中显示编译错误接口代理 如解决跨域热更新使用步骤安装webpack-dev-server配置devServer字段利用命令行开启服务npm install webpack-dev-server –save //安装局部
    配置devServer/

    2020/03/20
  • javascript回调函数的理解和使用方法(callback)教程视频_函数菜鸟教程

    js回调函数的作用?在js开发中,程序代码是从上而下一条线执行的,但有时候我们需要等待一个操作结束后,再进行下一步操作,这个时候就需要用到回调函数。 举个例子:比如你到商场买东西,刚好没有你需要的货品,这时候你留下电话,店里有货了救让店员通知你,然后你接到电话到店里取到了货。这里的电话号码就可看做回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫

    2020/04/05
  • Web前端知识体系精简入门基础教程_web菜鸟指南

    Web前端技术由 html、css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。本文将对Web前端知识体系进行简单的梳理,对应的每个知识点点到为止,不作详细介绍。目的是帮助大家审查自

    2020/04/05
  • 一对一直播私聊软件【 同城1对1视频】新手入门_直播菜鸟指南

    一对一直播模式一对多就是一个主播需要面对两个以上的用户,而一对一就是主播只会面对一个用户这里建议独占欲强的人,如果你想要和主播搞暧昧的话,就别去一对多了 原因很简单,一对多主播需要服务前来观看的用户,所以根本不可能专注服务你一个人,除非你充的钱多。但充的钱再多也要和其他土豪竞争看看谁才是真真的土豪,所以这就是为啥要选择一对一,除非你真的是土豪中的土豪。 如果

    2020/03/23
  • 如何优雅监听容器高度变化使用帮助_容器入门攻略

    前言老鸟:怎样去监听 DOM 元素的高度变化呢?菜鸟:哈哈哈哈哈,这都不知道哦,用 onresize 事件鸭!老鸟扶了扶眼睛,空气安静几秒钟,菜鸟才晃过神来。对鸭,普通 DOM 元素没有 onresize 事件,只有在 window 对象下有此事件,该死,又双叒叕糗大了。哈哈哈哈,以上纯属虚构,不过在最近项目中还真遇到过对容器监听高(宽)变化:在使用 isc

    2020/03/29