63 lines
1.3 KiB
TypeScript
63 lines
1.3 KiB
TypeScript
|
|
export default class Dispatcher {
|
|
|
|
dict: Object
|
|
constructor() {
|
|
this.dict = new Object();
|
|
}
|
|
//添加一个回调函数
|
|
add(type, callback, thisObj) {
|
|
var callbacks = this.dict[type];
|
|
if (callbacks) {
|
|
if (this.getIndex(callbacks, callback, thisObj) != -1)
|
|
return;
|
|
}
|
|
else {
|
|
callbacks = new Array();
|
|
this.dict[type] = callbacks;
|
|
}
|
|
callbacks.push({ 'callback': callback, 'thisObj': thisObj });
|
|
}
|
|
getIndex(array, callback, thisObj) {
|
|
for (var i = 0; i < array.length; i++) {
|
|
var data = array[i];
|
|
if (data['callback'] == callback && data['thisObj'] == thisObj) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
//删除一个回调函数
|
|
remove(type, callback, thisObj) {
|
|
//没有该类型的数组
|
|
if (!this.dict[type]) {
|
|
return;
|
|
}
|
|
var callbacks = this.dict[type];
|
|
if (!callbacks) {
|
|
return;
|
|
}
|
|
var index = this.getIndex(callbacks, callback, thisObj);
|
|
if (index != -1) {
|
|
callbacks.splice(index, 1);
|
|
}
|
|
if (callbacks.length <= 0) {
|
|
delete this.dict[type];
|
|
}
|
|
}
|
|
//执行回调
|
|
execute(type, params = null) {
|
|
var callbacks = this.dict[type];
|
|
if (callbacks == undefined) return;
|
|
|
|
for (var i = 0; i < callbacks.length; i++) {
|
|
var data = callbacks[i];
|
|
var callback = data['callback']
|
|
var thisObj = data['thisObj']
|
|
|
|
callback.apply(thisObj, [params])
|
|
}
|
|
}
|
|
}
|
|
|