如何回电功能?

时间:2011-06-29 10:56:37

标签: javascript node.js

我有这个简单的代码。

myobj.job('first', function (one, two){

   console.log("First");

});

myobj.job('second', function (one, two){

   console.log("Second");

});

现在的问题是:

myobj 如何根据事件(“第一个”或“第二个”)调用其中一个?

由于

3 个答案:

答案 0 :(得分:1)

它被称为observer pattern

以下是一个示例实现 - http://jsfiddle.net/6Jv5n/1

答案 1 :(得分:1)

您可能会在将来为事件发射器/侦听器寻找更多功能,以便您可以查看一些现成的模块:

EventEmitter2

https://github.com/hij1nx/EventEmitter2

功能

  • 的名称空间事件通配符
  • 名称空间时间收听(TTL),
  • 扩展了曾经的概念浏览器
  • 环境兼容性好或
  • 更好的排放性能和
  • 侦听器注册为Node.js核心
  • EventEmitter Smaller。
  • EventEmitter2.js(2.2K Minified)VS。
  • events.js(2.7K缩小)

Hook.io

https://github.com/Marak/hook.io

hook.io创建一个分布式node.js EventEmitter,它可以跨进程/跨平台/跨浏览器工作。

您可以通过从广泛的小型独立自主“钩子”库中挑选和选择来创建自定义i / o场景。


看看这些的源代码,它会让你知道如何很好地发挥事件。

答案 2 :(得分:0)

nodejs& EventEmitter回答: http://nodejs.org/docs/v0.4.9/api/events.html

function myobj()
{
   // constructor
}

util.inherits(myobj, process.EventEmitter)

myobj.prototype.hereComesEvent1 = function()
{
   // do stuff
   // ..
   // fire event
   this.emit('first', 1, 2);
}

myobj.prototype.hereComesEvent2 = function()
{
   // do stuff
   // ..
   // fire event
   this.emit('second', 'one', 'two');
}


// test myobj

var mo = new myobj();
mo.on('first', function(a, b) {
   console.log([a, b]);
});
mo.on('second', function(a, b) {
   console.log([a, b]);
});

mo.hereComesEvent1();
mo.hereComesEvent2();