2014-12-07 65 views
0

我試圖限制來自常見消息總線的事件應發送到服務器。 允許的事件在outgoingEvents數組中。問題是要正確發送他們的服務器我需要事件名稱。如何獲取使用.fromEvent創建的Observable的事件名稱

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在出現第三個參數中.fromEvent

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

因此,這將是.subscribe參數功能inservable對象:

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