Node.js发送到一个特定的监听器

Node.js emit to a specific listener

本文关键字:一个 监听器 js Node      更新时间:2023-09-26

可以在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

在花了一些时间了解事件的工作原理后,我不知道如何才能做到这一点。

任何想法?

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

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

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