简体   繁体   English

如何获取使用.fromEvent创建的Observable的事件名称

[英]How do I get event name of Observable created with .fromEvent

I'm trying to restrict what events coming from common message bus should be emitted to server. 我试图限制来自公共消息总线的事件应发送到服务器。 Allowed events are on outgoingEvents array. 允许的事件在outgoingEvents数组上。 Problem is that to properly send them th server I need event name. 问题是要正确地向他们发送服务器,我需要事件名称。

var Events = new EventEmitter();
var outgoingEvents = [
    'messageSubmit'
];

var outgoingMessages = Observable.fromArray(outgoingEvents)
.flatMap(function(eventName) {
    return Observable.fromEvent(Events, eventName);
}).subscribe(function() {
    // need event name here to properly encode message:

    // var eventName = ... should be 'messageSubmit'
    // var args = [].slice.call(arguments, 1);
    // var encoded = JSON.stringify({ name: eventName, args: args });
    // socket.send(encoded);
});

Events.emit('messageSubmit', { message: 'Submitted!' }, {flags: 'ABC'});

It is possible to reshape objects that get emmited to inservable in function that comes third parameter in .fromEvent 可以重塑.fromEvent中第三个参数附带的函数中被赋予可服务对象的.fromEvent

return Observable.fromEvent(Events, eventName, function() {
    var args = [].slice.call(arguments[0]);
    return { name: eventName, args: args };
});

So it will be arguments of .subscribe : 因此它将是.subscribe参数:

var eventName = event.name;
var args = event.args;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM