Node.js向特定侦听器发出

时间:2014-07-10 21:56:37

标签: javascript node.js function events emit

可能会发送到node.js中的特定侦听器吗?

一个例子:

emitter.js

var EventEmitter = require('events').EventEmitter;

module.exports = function() {

    var controller = new EventEmitter();

    return {

        set: function(opts) {
            setTimeout(function() {
                controller.emit('ok', opts);
            }, 10);

            return controller;
        },

        get: function(opts) {
            setTimeout(function() {
                controller.emit('ok', opts);
            }, 10);

            return controller;
        }

    };
};

app.js

var express = require('express'),
    app = express(),
    server = require('http').createServer(app);

server.listen(8080);

var testEmitter = require('./emitter')();

testEmitter.set('set').on('ok', function(resp) {
    console.log('set', resp);
});

testEmitter.get('get').on('ok', function(resp) {
    console.log('get', resp);
});

/*result*/

//set set
//get set
//set get
//get get

我的想法是为所有听众发射,我想只为特定的听众发射。

换句话说,而不是

的结果
// set set
// get set
// set get
// get get

我想要这个

// set set
// get get

花了一些时间来了解事件是如何运作的,我不知道如何做到这一点。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您正在使用标准侦听器设计模式,其优点之一不是(必须)了解侦听器......

对于你的问题,你需要以任何方式区分你的听众。

您将破坏/更改模式,或维护许多侦听器列表。