Как получить имя события 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'});
1 ответ
Решение
Можно изменить форму объектов, которые выделяются в inservable в функции, которая получает третий параметр в .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;