事件监听器与事件发射器之间的关系——node环境下

  在node中,充满了异步。如果使用回调的话会陷入回调陷阱。在密密麻麻的"});"中挣扎。

  所以使用事件发射\监听的方式去构造我们的代码能带我们走去回调地狱,走向愉快。具体有多好谁用谁知道啊,不过今晚遇到了个坑,官网和众多的博客都没有提到。,可能是太基础了吧,但为了像我这样野生的工程狮能不要像我这样爬地那么费劲还是分享下。

var events = require("events")
var emitter = new events.EventEmitter()

emitter.emit(‘getPageUrls‘,4)
emitter.emit(‘getPageUrls‘, 1);

emitter.on("getPageUrls", function(foo){
    console.log(foo);
})

emitter.emit(‘getPageUrls‘,2)
emitter.emit("getPageUrls", 3)

  以上代码的运行结果如下:

2
3  

  这是因为事件的发射器必须写在事件的监听器后面,后者则会监听不到。

  至于为什么。额,等以后研究到了源代码再来填坑吧。

时间: 2024-11-07 13:07:07

事件监听器与事件发射器之间的关系——node环境下的相关文章

addEventListener 事件监听器 冒泡事件)

addEventListener 事件监听器 (冒泡事件) 1.后面绑定的事件照样会执行 2.不会被覆盖 3.调用者是事件源but.addEventListener 4.参数1,事件名(不带on 点击,移开)("click",fn1) 5.参数2执行函数("click",fn1) 6.参数3事件名(捕获或者冒泡) 7.火狐谷歌IE9+ 支持addEventListener var but=document.getElementsByTagName("but

事件监听器原理——事件对象、事件监听器、事件源

package cn.my.demo; //设计一个监听器 public class Demo2 { public static void main(String[] args) { Person p=new Person(1001,"张三"); p.refisterListener(new PersonListener() { public void dorun(Event e) { Person p=e.getSource(); System.out.println("W

Java设计模式补充:回调模式、事件监听器模式、观察者模式(转)

一.回调函数 为什么首先会讲回调函数呢?因为这个是理解监听器.观察者模式的关键. 什么是回调函数 所谓的回调,用于回调的函数. 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数. 有这么一句通俗的定义:就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序.程序员B要让a调用自己的程序b中的一个方法,于是,他通过a中的接口回调自己b中的方法. 举个例子: 这里有两个实体:回调抽象接口.回调者(即程序a) 回调接口(ICallBack ) public i

鼠标事件监听器的创建和使用

鼠标操作是图形操作系统最常用操作,用户使用鼠标单击,双击,右击,拖动等操作实现与软件的交互. 鼠标事件监听器 鼠标事件监听器由MouseListener接口和MouseMotionListener接口定义,分别定义鼠标捕获不同的鼠标操作方法. MouseListener监听器方法说明 mouseClicked(MouseEvent e) 处理鼠标单击事件方法 mouseEntered(MouseEvent e) 鼠标进入组件区域时执行方法 mouseExited(MouseEvent e) 鼠标

Hibernate拦截器(Interceptor)与事件监听器(Listener)

拦截器(Intercept):与Struts2的拦截器机制基本一样,都是一个操作穿过一层层拦截器,每穿过一个拦截器就会触发相应拦截器的事件做预处理或善后处理. 监听器(Listener):其实功能与拦截器是相似的,但它实现原理不同,它是为每一个事件注册一个或多个监听器,一旦事件发生,则事件源通知所有监听该事件的监听器,然后监听器处理通知(观察者模式). 拦截器 Hibernate为我们提供了实现拦截器的接口org.hibernate.Interceptor,它里面提供了许多拦截事件.通常不需要实

JavaScript&jQuery.DOM事件监听器

DOM是事件监听器 DOM事件监听器予许一个事件触发多个方法,在实际工作中应用比较多. <!DOCTYPE html><html> <head> <title>DOM事件监听器1</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0&q

JS中的事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE

转载请注明出处:http://www.cnblogs.com/zhangmingze/p/4864367.html ● 事件分为三个阶段:   事件捕获 -->  事件目标 -->  事件冒泡 ● 事件捕获:事件发生时(onclick,onmouseover--)首先发生在document上,然后依次传递给body.……最后到达目的节点(即事件目标). ● 事件冒泡:事件到达事件目标之后不会结束,会逐层向上冒泡,直至document对象,跟事件捕获相反 1.onlick -->事件冒泡,

事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE

● 事件分为三个阶段:   事件捕获 -->  事件目标 -->  事件冒泡 ● 事件捕获:事件发生时(onclick,onmouseover--)首先发生在document上,然后依次传递给body.……最后到达目的节点(即事件目标). ● 事件冒泡:事件到达事件目标之后不会结束,会逐层向上冒泡,直至document对象,跟事件捕获相反 1.onlick -->事件冒泡,重写onlick会覆盖之前属性,没有兼容性问题 ele.onclik = null; //解绑单击事件,将onlic

Zstack中任务,事件,消息之间的关系

Zstack是Zigbee协议的具体实现,在实现的过程中为了能够更好的对各个模块和功能进行管理,所以加入了OSAL(Operating System Abstraction Layer 操作系统抽象层)(以上为个人见解). 在OSAL中,提出了任务,事件,消息三个概念.它们之间的关系如下: 任务是处理事件的一个功能集合,一般由一个事件处理函数实现(ProcessEvents) 事件是当前系统中被触发的动作,例如有按键按下,接收到其他节点发送过来的消息等等 消息则是事件编号和其对应事件内容的集合,