Как получить имя события Observable, созданного с помощью .fromEvent

Я пытаюсь ограничить, какие события, поступающие из общей шины сообщений, должны отправляться на сервер. Разрешенные события находятся в массиве 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'});

person Yury Solovyov    schedule 07.12.2014    source источник


Ответы (1)


Можно изменить форму объектов, которые были переведены в необслуживаемые, в функции, которая является третьим параметром в .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;
person Yury Solovyov    schedule 07.12.2014