1、单线程

不同于其他的后盾语言,node是单线程的,大大节约服务器开支

node不为每个客户创建一个新的线程,仅使用一个线程。通过非阻塞I/O以及

事件驱动机制,使其宏观上看是并发的,可以处理高并发。

2、非阻塞式I/O

1)当我们遭遇异步时,可以通过以下方法解决:

①回调函数

在使用异步的函数时,追加提个回调函数为参数,在使用时传入所需要的回调即可

const fs = require('fs')// 如何解决异步问题?
// 方法1:通过回调函数解决
function getContent(cb) {fs.readFile('a.txt', (err, data) => {if (err) {console.log(err)return false}cb(data)})
}getContent((data) => {console.log(data.toString())
})

②使用events模块进行监听

const fs = require('fs')
const events = require('events')// 如何解决异步问题?
// 方法2:通过node中events模块//我们主要通过EventEmitter对象来进行广播和接收广播
const EventEmitter = new events.EventEmitter()//监听to_parent的广播,只进行监听
function getContent() {fs.readFile('a.txt', (err, data) => {if (err) {console.log(err)return false}EventEmitter.emit('data',data)})
}getContent()EventEmitter.on('data', (data) => {console.log(data.toString())
})

转载于:https://www.cnblogs.com/Tanqurey/p/11145097.html

node--非阻塞式I/O,单线程,异步,事件驱动相关推荐

  1. node - 非阻塞的异步 IO

    node - 非阻塞的异步 IO 每当我们提起 node.js 时总会脱口而出 事件驱动.非阻塞I/O 和 单线程,所以我总结了以下几点对这三项概念的阐述,不一定正确仅仅代表个人观点. 单线程 当一个 ...

  2. 非阻塞式异步Java 8和Scala的Try / Success / Failure

    受Heinz Kabutz最近的时事通讯以及我在最近的书中研究的Scala的期货的启发,我着手使用Java 8编写了一个示例,该示例如何将工作提交给执行服务并异步地响应其结果,并使用了回调.无需阻止任 ...

  3. Spring WebFlux异步非阻塞式编程

    一.什么是 Spring WebFlux Spring MVC 构建于 Servlet API 之上,使用的是同步阻塞式 I/O 模型,什么是同步阻塞式 I/O 模型呢?就是说,每一个请求对应一个线程 ...

  4. 五种网络IO模型:阻塞式IO 非阻塞式IO IO复用(IO multiplexing) 信号驱动式IO 异步IO

    文章目录 五种网络IO模型 举例说明 阻塞式I/O模型 非阻塞式I/O I/O多路复用 信号驱动式I/O 异步I/O 比较结果 总结 同步 异步 阻塞 非阻塞 阻塞/非阻塞: 同步/异步: 举例子:小 ...

  5. 系统间通信1:阻塞与非阻塞式通信A

    版权声明:本文引用https://yinwj.blog.csdn.net/article/details/48274255 从这篇博文开始,我们将进入一个新文章系列.这个文章系列专门整理总结了目前系统 ...

  6. 异步就是异步,根本就没有 异步非阻塞IO这个说法。阻塞 非阻塞,同步I/O 异步I/O 的区别

    先给大家安利一下这个 https://www.ibm.com/developerworks/cn/linux/l-async/ 里面关于 异步非阻塞IO 是错的. 异步就是异步,别扯 异步阻塞 异步非 ...

  7. Servlet3.1 新增的非阻塞式IO

    Servlet3.1新增的新特性 强制更改sessionId 由HttpServletRequest 的changeSessionId()方法实现 非阻塞式IO 非阻塞式IO 我们应该知道Servle ...

  8. 系统间通信1:阻塞与非阻塞式通信B

    版权声明:本文引用https://yinwj.blog.csdn.net/article/details/48274255 接上篇:系统间通信1:阻塞与非阻塞式通信A 4.3 NIO通信框架 目前流行 ...

  9. java处理异步非阻塞请求_Spring WebFlux 的异步非阻塞处理

    前言 随着 Web Servlet 技术栈的不断发展实现了异步处理与非阻塞 IO,但是其异步是不彻底的,因为受制于 Servlet 规范本身,比如其规范是同步的(Filter,Servlet)或阻塞( ...

  10. java socket nio 阻塞_Java NIO实现非阻塞式socket通信

    博主知识水平有限,只能提供一个个人的狭隘的理解,如果有新人读到这儿,建议看一下其他教程或者API,如果不明白,再来看一下:如果有dalao读到这儿,希望能指出理解中的问题~谢谢 Java提供了用于网络 ...

最新文章

  1. java 二叉树中和为某一值的路径_25. 二叉树中和为某一值的路径
  2. python输出假分数_分数的表示以及计算(c++)
  3. oracle子查询为游标结果集,这个SQL怎么破?select后的爬树子查询(connect by)变换
  4. [故障解决]Mysql爆出ERROR 1044 (42000)的错误怎么办?
  5. java 的function_Function方法-java
  6. SK海力士推出首款DDR5 DRAM 适用于大数据、人工智能等领域
  7. 数据--第52课 - 哈希表及其实现
  8. 清华linux网络编程视频,清华大学视频课件:基于Linux的C++(自主模式)
  9. 合肥Java面试常考题_java面试常考题-String
  10. [从头读历史] 第295节 神之物语 结语:为什么会有希腊神话
  11. macos可以升级到指定版本吗_错过Mac OS升级,找不到旧OS版本怎么办?
  12. 后台录屏、应用外录屏、跨应用录屏、直播屏幕、录屏扩展(ios)
  13. 在web中打开SVG格式文件
  14. DB2相关数据库命令
  15. Python爬虫之初识简介以及舆情系统简介【爬虫篇一】
  16. trim函数 html,jQuery trim()函数怎么用?
  17. 刷题日记 acwing 2058笨拙的手指 位运算的运用,迭代器的使用,秦九稍(别的进制转化为10进制)
  18. 滴滴治理算法探索与实践
  19. 中美自动驾驶进入全格局竞争,湖南湘江新区智能系统测试区可成为关键一招吗?...
  20. 硬盘、寄存器、二级缓存(高速缓存)、内存四种存储器中,速度最快的是?

热门文章

  1. 远哥谈 使用WebSocket开发在线实时看远程服务器log日志的工具
  2. MongoDB之bson的介绍
  3. 【ASP.NET Web API教程】2.3.3 创建Admin控制器
  4. 新的开始,连菜鸟都算不上的程序媛
  5. MVC项目开发中那些用到的知识点(登录权限认证)
  6. ACM训练小结-2018年6月19日
  7. kubernetes常用命令
  8. Android应用博客目录
  9. angular模拟web API
  10. 微信小程序 --- 图片自适应、本地图片的使用