nodejs事件机制
var EventEmitter = function() {
this.evts = {};
};
EventEmitter.prototype = {
constructor: EventEmitter,
on: function(type, fn) {
var evt = this.evts[type] || (this.evts[type] = []);
if(evt.indexof(fn)) {
evt.push(fn);
}
},
off: function(type, fn) {
var handlers = this.evts[type] || [], index;
if(handlers.length === 0) {
this.evts = {};
} else if(arguments.length === 1) {
delete this.evts[type];
} else {
handlers.some(function(f, idx) {
if(f === fn || f.fn === fn) {
index = idx;
return true;
}
});
index = handlers.indexof(fn);
if(index > -1) {
handlers.splice(index, 1);
}
if(this.evts[type].length === 0) {
delete this.evts[type];
}
}
},
emit: function(type) {
if(!this.evts[type]) return;
var args = [].slice.call(arguments,1);
this.evts[type].foreach(function(f) {
f.apply(null,args);
});
},
once: function(type, fn) {
var self = this;
var f = function() {
fn.apply(this,[].slice.call(arguments,0));
self.off(type, f);
}
f.fn = fn;
this.on(type, f);
}
};
nodejs事件机制的更多相关文章
- nodejs 事件机制
node 事件机制 一 三种定时器 NodeJS中有三种类型的定时器:超时时间.时间间隔.即时定时器 1.超时时间:setTimeout(callback,delayMilliSeconds,[a ...
- EventEmitter:nodeJs事件触发机制
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列 Node.js 里面的许多对象都会分发事件:一个 net.Server 对象会在每次有新连接时触发一个事件, 一个 fs.r ...
- 12.nodejs事件轮询机制
一:nodejs事件轮询机制 就是 函数的执行顺序 <script type="text/javascript"> setImmediate(function(){ ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- nodeJS中的事件机制
events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Node.js ...
- Node.js入门:事件机制
Evented I/O for V8 JavaScript 基于V8引擎实现的事件驱动IO. 事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://n ...
- 【iScroll源码学习03】iScroll事件机制与滚动条的实现
前言 想不到又到周末了,周末的时间要抓紧学习才行,前几天我们学习了iScroll几点基础知识: 1. [iScroll源码学习02]分解iScroll三个核心事件点 2. [iScroll源码学习01 ...
- nodejs事件的监听与事件的触发
nodejs事件(Events) 一.事件机制的实现 Node.js中大部分的模块,都继承自Event模块(http://nodejs.org/docs/latest/api/events.html ...
- nodejs运行机制
有一天老大忽然问起我这个问题,nodejs运行机制 是怎样的?因自己对nodejs也不是很熟悉,就上网查了一下,得出结果如下: 1.简介 Node.js是一个事件驱动I/O服务端JavaScript环 ...
随机推荐
- checkbox和radio的样式美化问题
如果你下定决心要改变现有的默认的checkbox和radio的样式,那么我目前有两种办法: 1.自己动手写一个,也就是自己写代码实现将input的checkbox和radio默认的样式隐藏掉,使用绝对 ...
- asp.net 超链接 下载TEXT文件,而不是直接在IE中打开
问题描述:后台生成了文本文件,用超链接提供给用户下载.点击超链接,下载Excel文件没问题,但文本文件会直接被打开,而不是弹出下载窗口. 解决方法:把HyperLink改为LinkButton,在Cl ...
- OCP prepare 20140627
1. catalog start with catalog start with 是一个很好的命令. 有了这个命令后, 基本上可以不再使用catalog数据库了 . 因为可以通过这个命令将以前的备份 ...
- memcached-session-manager的一些理解
1.节点分配 粘性规划: Tomcat-1(t1)将session优先备份在运行在令一台机器上的memcached-2(m2)上面,仅当m2失效的时候,t1才会将sessin存储在m1上面(m1是t1 ...
- 20151205--JDBC-2
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Object的增。删。查。改。遍历
1.增: 1.向对象添加属性和方法 (私有) ---> obj.属性 =""; 2.向对象原型添加方法 (公共) ---> obj.prototype. ...
- 火星A+B(字符串整形转化,进制)
Description 读入两个不超过25位的火星正整数A和B,计算A+B.需要注意的是:在火星上,整数不是单一进制的,第n位的进制就是第n个素数.例如:地球上的10进制数2,在火星上记为“1,0”, ...
- hdu4507
数位dp,终于守得云开见月明了.建议初学者先试试两道比较简单的hdu2089,hdu3555. 鸣谢:http://blog.csdn.net/acm_cxlove/article/details/8 ...
- mysql触发器使用注意
1.在创建触发器的时候,语句中避免在一个select语句查询多个列,例如使用select a,b from table,应该分开使用select语句, 例如select a from table s ...
- CentOS yum安装配置lnmp服务器(Nginx+PHP+MySQL)
1.配置防火墙,开启80端口.3306端口 vi /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport ...