Commit a1d45a29 authored by Neal Ding's avatar Neal Ding Committed by Jason Song

Refactor EventManager(#2902)

parent 0def6a23
...@@ -23,24 +23,15 @@ appService.service('EventManager', [function () { ...@@ -23,24 +23,15 @@ appService.service('EventManager', [function () {
return; return;
} }
if (!context) { context = context || {};
context = {};
}
if (!objectId) {
objectId = ALL_OBJECT;
}
var subscribers = eventRegistry[eventType][objectId];
emitEventToSubscribers(subscribers, context);
if (objectId == ALL_OBJECT) {
return;
}
if (objectId != null && objectId != ALL_OBJECT) {
emitEventToSubscribers(eventRegistry[eventType][objectId], context);
emitEventToSubscribers(eventRegistry[eventType][ALL_OBJECT]);
} else {
//emit event to subscriber which subscribed all object //emit event to subscriber which subscribed all object
subscribers = eventRegistry[eventType][ALL_OBJECT]; emitEventToSubscribers(eventRegistry[eventType][ALL_OBJECT], context);
emitEventToSubscribers(subscribers); }
} }
function emitEventToSubscribers(subscribers, context) { function emitEventToSubscribers(subscribers, context) {
...@@ -62,27 +53,15 @@ appService.service('EventManager', [function () { ...@@ -62,27 +53,15 @@ appService.service('EventManager', [function () {
return; return;
} }
if (!objectId) { objectId = objectId || ALL_OBJECT;
objectId = ALL_OBJECT; eventRegistry[eventType] = eventRegistry[eventType] || {};
} eventRegistry[eventType][objectId] = eventRegistry[eventType][objectId] || [];
var subscribedObjects = eventRegistry[eventType];
if (!subscribedObjects) {
subscribedObjects = {};
eventRegistry[eventType] = subscribedObjects;
}
var callbacks = subscribedObjects[objectId];
if (!callbacks) {
callbacks = [];
subscribedObjects[objectId] = callbacks;
}
var subscriber = { var subscriber = {
id: Math.random() * Math.random(), id: Math.random() * Math.random(),
callback: callback callback: callback
}; };
callbacks.push(subscriber); eventRegistry[eventType][objectId].push(subscriber);
return subscriber.id; return subscriber.id;
} }
...@@ -98,23 +77,17 @@ appService.service('EventManager', [function () { ...@@ -98,23 +77,17 @@ appService.service('EventManager', [function () {
return; return;
} }
if (!objectId) { objectId = objectId || ALL_OBJECT;
objectId = ALL_OBJECT;
}
var subscribers = eventRegistry[eventType] ?
eventRegistry[eventType][objectId] : undefined;
if (!subscribers) { if (eventRegistry[eventType] && eventRegistry[eventType][objectId]) {
return; var subscribers = eventRegistry[eventType][objectId];
}
subscribers.forEach(function (subscriber, index) { subscribers.forEach(function (subscriber, index) {
if (subscriber.id == subscriberId) { if (subscriber.id == subscriberId) {
subscribers.splice(index, 1); subscribers.splice(index, 1);
} }
}) })
}
} }
return { return {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment