【发布时间】:2016-10-17 05:44:58
【问题描述】:
我想从一个服务更新多个控制器中的数据。一种选择是在$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();
});
所以我想我的问题是:
- 我有什么理由不应该使用这种回调机制。 (内存泄漏?)
- 我应该只参加活动吗?在这种规模下性能无关紧要?
- 改进?
【问题讨论】:
标签: javascript angularjs events callback