서비스의 여러 컨트롤러에서 데이터를 업데이트하려고합니다. 한 옵션은 데이터를 $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();
});
그래서 내 질문은 생각 : 나는 이런 종류를 사용하지 말아야하는 이유
- 어떤 이유가 있습니까 콜백 메커니즘. (메모리 누수가 있습니까?)
- 그냥 이벤트로 대신 가야합니까? 이 규모에서는 성능이 적절하지 않습니까?
- 개선 되었습니까?