0

可以向 node.js 中的特定侦听器发出吗?

一个例子:

发射器.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;
        }

    };
};

应用程序.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

在花了一些时间了解事件是如何工作的之后,我不知道我该怎么做。

任何想法?

4

1 回答 1

0

You are using the standard listener design pattern, whose one of advantages is not to (have to) know listeners...

For you problem, you need to discriminate your listeners in any ways.

You will either break/change the pattern, or maintain many listener lists.

于 2014-07-10T22:18:47.267 回答