作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望我的 Controller 能够订阅外部事件源,我通常会这样定义:
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,这样在我的 Controller 中我就能够单独订阅每种类型的事件,并订阅一次或重复,以及取消订阅。
这有道理吗?有没有更好的方法可以使用 $q
API 来执行此操作?如果没有,我该如何将异步事件映射到 AngularJS 服务 API?
最佳答案
您可以为每种消息类型注册一个监听器。
source.addEventListener('alpha', function(e) {
doSomething();
}, false);
source.addEventListener('beta', function(e) {
doSomethingElse();
}, false);
关于javascript - 如何将外部 EventSource 作为 AngularJS 服务进行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14406683/
我是一名优秀的程序员,十分优秀!