如何获取使用 .fromEvent 创建的可观察的事件名称

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

本文关键字:创建 观察 事件 fromEvent 何获取 获取      更新时间:2023-09-26

我试图限制来自公共消息总线的事件应该发送到服务器。允许的事件位于outgoingEvents数组上。问题是要正确发送服务器,我需要事件名称。

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'});

可以重塑在函数中发出为不可服务的对象,该函数是.fromEvent中的第三个参数

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

所以这将是.subscribe的论据:

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