从服务

时间:2016-06-15 22:23:04

标签: javascript angularjs events callback

我想从服务更新多个控制器中的数据。一种选择是在$rootScope上广播/发布数据。

我必须拥有数百名听众,其中一些倾听同一事件,一些倾听其他人。每隔几秒就会发一次事件。

我创建了一个使用回调的工作解决方案,并可以取消注册它们。奇怪的是,我没有看到其他人使用类似的解决方案,这让我想知道是否有某些理由不这样做。

服务

var callbacks = {};
var idCounter = 0;
function register(cb) {
  var id = idCounter++;
  callbacks[id] = cb;

  return function() {
    delete callbacks[id];
  };
}

function send(data) {
  for (var i in callbacks) {
    callbacks[i](data);
  }
}

控制器

var d = service.register(function(data) {
  console.log(data);
});

$scope.$destroy(function() {
  d();
});

所以我想我的问题是:

  • 我有什么理由不使用这种回调机制。 (内存泄漏?)
  • 我应该选择参加活动吗?这种规模的表现无关紧要?
  • 改进?

1 个答案:

答案 0 :(得分:0)

您重现事件和调度员的概念....使用它!如果未删除var d = ...(在控制器中)指针的函数范围,则表示内存泄漏。另外在服务中var callbacks是丑陋的幻灯片效果,因为这个原因更喜欢事件是干净的封装和通用服务!