2014-12-07 6 views
0

Я пытаюсь ограничить, какие события, исходящие из общей шины сообщений, должны быть отправлены на сервер. Допустимые события находятся на outgoingEvents массив. Проблема в том, что для правильной отправки их на сервер мне нужно имя события.Как получить имя события Observable, созданное с .fromEvent

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

ответ

0

Можно изменить объекты, которые получают emmited к 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; 

 Смежные вопросы

  • Нет связанных вопросов^_^