【问题标题】:Node.js emit to a specific listenerNode.js 发射到特定的侦听器
【发布时间】:2014-07-10 21:56:36
【问题描述】:

可以发送到 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

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

有什么想法吗?

【问题讨论】:

    标签: javascript node.js function events emit


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-25
      • 1970-01-01
      • 2016-07-06
      • 1970-01-01
      • 2022-11-11
      • 2015-02-07
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      相关资源
      最近更新 更多