Javascript 如何将外部EventSource作为AngularJS服务处理?

Javascript 如何将外部EventSource作为AngularJS服务处理?,javascript,javascript-events,angularjs,Javascript,Javascript Events,Angularjs,我希望我的控制器能够订阅一个外部事件源,我通常使用以下方式定义: var source = new EventSource('http://someURL.com/foo'); source.addEventListener('bar', handler, false); 现在让我们假设我使用的API只有一个事件本身,但该事件根据实际事件的不同给出不同的字符串。所以我的处理程序看起来像: var handler = function(data) { switch(data.cmd) {

我希望我的控制器能够订阅一个外部事件源,我通常使用以下方式定义:

var source = new EventSource('http://someURL.com/foo');
source.addEventListener('bar', handler, false);
现在让我们假设我使用的API只有一个事件本身,但该事件根据实际事件的不同给出不同的字符串。所以我的处理程序看起来像:

var handler = function(data) {
   switch(data.cmd) {
       case 'alpha' : doSomething(); break;
       case 'beta' : doSomethingElse(); break;
       case 'cappa' : doAnotherThing(); break;
   }
}
我知道这很不幸,但这就是它的实施方式。我想要的是能够公开一个有意义的服务API,因此在我的控制器中,我能够单独订阅每种类型的事件,订阅一次或多次,以及取消订阅


这有意义吗?使用$QAPI有没有更好的方法来实现这一点?如果没有,我如何将异步事件映射到AngularJS服务API?

您可以为每种消息类型注册一个侦听器

source.addEventListener('alpha', function(e) {
  doSomething();
}, false);

source.addEventListener('beta', function(e) {
  doSomethingElse();
}, false);