文档章节

事件循环和模式

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);
      }; 
}


© 著作权归作者所有

共有 人打赏支持
上一篇: 异常处理
下一篇: mysql密码重置
song316
粉丝 1
博文 9
码字总数 1085
作品 0
闵行
高级程序员
私信 提问
iOS学习——浅谈RunLoop

  RunLoop的字面意思是运行循环、跑圈,一个App启动后能一直执行,就是因为启动后进入了一个循环,在这个循环中不断监听各种状态、手势动作,并做出相应的响应。这个循环就是我们今天要探究...

mukekeheart
10/11
0
0
(转) Twisted : 第三部分:开始认识Twisted

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

水果糖
2016/01/27
25
0
twisted学习(reactor)

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

fsxchen
2013/08/19
0
0
NSTimer 与 Run loop Modes

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

hejunbinlan
2015/11/24
26
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

没有更多内容

加载失败,请刷新页面

加载更多

零距离接触阿里云时序时空数据库TSDB

概述 最近,Amazon新推出了完全托管的时间序列数据库Timestream,可见,各大厂商对未来时间序列数据库的重视与日俱增。 阿里云TSDB是阿里巴巴集团数据库事业部研发的一款高性能分布式时序时空...

阿里云云栖社区
15分钟前
0
0
OkHttpClient封装

import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Map; import java.util.TreeMap; import java.util.Map.Entry; import o......

尘叙缘
17分钟前
1
0
零距离接触阿里云时序时空数据库TSDB

概述 最近,Amazon新推出了完全托管的时间序列数据库Timestream,可见,各大厂商对未来时间序列数据库的重视与日俱增。 阿里云TSDB是阿里巴巴集团数据库事业部研发的一款高性能分布式时序时空...

阿里云官方博客
17分钟前
0
0
centos 7 nginx_install.sh

#!/bin/bashset -eprintf "============开始安装nginx\n"printf "============输入nginx下载url,按Enter默认下载1.14.2版本\n"download_url='';while truedoread down...

偶遇一只小仙女
18分钟前
0
0
数据库高并发下乐观锁的原理

在高并发下,经常需要处理SELECT之后,在业务层处理逻辑,再执行UPDATE的情况。 若两个连接并发查询同一条数据,然后在执行一些逻辑判断或业务操作后,执行UPDATE,可能出现与预期不相符的结...

hansonwong
20分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部