文档章节

事件循环和模式

song316
 song316
发布于 2015/10/10 15:26
字数 178
阅读 1
收藏 0

宗旨:

    NodeJS中所有的IO操作都应该是非阻塞的. 基于回调函数的方式来处理.

策略:

  • 所有的操作都应该是事件驱动的.

  • 耗时的操作,考虑分配给web worker操作.

模式:

  • 无序并行IO

        NodeJS默认操作就是无序并行的.

        如:              

fs.readFile('foo.txt', 'utf8', function(err, data) {
      console.log(data);
    };
fs.readFile('bar.txt', 'utf8', function(err, data) {
  console.log(data);
};
  • 顺序串行IO(嵌套回调)

        每个人任务需要在上一个任务执行完成后才能开始.

    

server.on('request', function(req, res) {
      var render = function(wsData) {
        page = pageRender(req, session, userData, wsData);
      };
      var getWsInfo = function(userData) {
        ws.get(req, render);
      };
      var getDbInfo = function(session) {
        db.get(session.user, getWsInfo);
      };
      var getMemCached = function(req, res) {
        memcached.getSession(req, getDbInfo);
      }; 
}


© 著作权归作者所有

共有 人打赏支持
song316
粉丝 1
博文 9
码字总数 1085
作品 0
闵行
高级程序员
(转) Twisted : 第三部分:开始认识Twisted

用twisted的方式实现前面的内容 最终我们将使用twisted的方式来重新实现我们前面的异步模式客户端。不过,首先我们先稍微写点简单的twisted程序来认识一下twisted。 最最简单的twisted程序就...

水果糖
2016/01/27
25
0
Redis 2.8.9源码 - ae模块

本文为作者原创,转载请注明出处:http://my.oschina.net/fuckphp/blog/505956 Redis 的 ae模块的代码主要分布在 ae.c ae.h 还有 ae*.c 中,分别实现了epoll、evport、kqueue、select几种网络...

logbird
2015/09/14
93
0
《Node.js设计模式》欢迎来到Node.js平台

本系列文章为《Node.js Design Patterns Second Edition》的原文翻译和读书笔记,在GitHub连载更新,同步翻译版链接。 欢迎关注我的专栏,之后的博文将在专栏同步: Encounter的掘金专栏 知乎...

counterxing
2017/10/07
0
0
NSTimer 与 Run loop Modes

一.NSRunLoop 在Cocoa中,每个线程(NSThread)对象中内部都有一个run loop(NSRunLoop)对象用来循环处理输入事件,处理的事件包括两类,一是来自Input sources的异步事件,一是来自Timer sou...

hejunbinlan
2015/11/24
26
0
twisted学习(reactor)

reactor是twisted框架里面一个很重要的抽象,它为我们实现了循环,所以我们不用再去实现循环了。 reactor有如下特点: 1、reactor循环会一致运行下去,可以使用Ctrl+C或者相关的方法停止。但...

fsxchen
2013/08/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
1
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
6
0
在Ubuntu安装和配置Sphinx

Ubuntu系统默认是配置有sphinx的,先检查一下,别多此一举。。。。。 在开始本指南之前,您需要: 一个Ubuntu 16.04服务器。 sudo的一个非root用户,您可以通过以下设置本教程 。 安装在服务...

阿锋zxf
今天
1
0
Qt编写输入法V2018超级终结版

对于qt嵌入式linux开发人员来说,输入法一直是个鸡肋问题,要么不支持实体键盘同步,要么不能汉字输入,要么不支持网页输入等,这几年通过陆续接触大量的各种输入法应用场景客户,得到真实需...

飞扬青云
今天
2
0
TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部