我希望我的控制器能够订阅外部事件源,我通常会定义它:
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,所以在我的控制器中我可以单独订阅每种类型的事件,并且可以订阅一次,或者重复订阅以及取消订阅。
这有意义吗?有没有更好的方法来实现这一点,我缺少使用$ q API?如果没有,我将如何将异步事件映射到AngularJS服务API?
答案 0 :(得分:0)
您可以为每种消息类型注册一个侦听器。
source.addEventListener('alpha', function(e) {
doSomething();
}, false);
source.addEventListener('beta', function(e) {
doSomethingElse();
}, false);