注册

uniapp里面可以使用的单利定时器


主要代码
var HashMap = require('../tools/HashMap')
/**
* 使用说明:
* 1、引入 var timeTool=require("../utils/timeTool.js")
* 2、onload 里面实例化并调用start方法:
* mtimeTool = new timeTool( this); mtimeTool.start();
添加监听函数:keykey随意写不要重复就好
mPKGame.addCallBack("keykey", () => {})
*/
//

class PKGame {
constructor(handler) {
this.mNetTool = netTool;
this.mHandler = handler;
this.mHandler;
this.commonTimer;
this.callBackListener = new HashMap();
this.instance;
// uni.setStorageSync("token",handler.appInfo.token)
}

destroy() {
this.clearInterval(commonTimer)
this.commonTimer = null;
}
start() {
if (!this.commonTimer) {
this.commonTimer = setInterval(() => {
var values = this.callBackListener.values();
for (var i in values) {
typeof values[i] == "function" && values[i]();
}
}, 1000);
}
// this.createRoom();
}

addCallBack(listenerKey, listener) {
this.callBackListener.put(listenerKey, listener)
}
removeCallBack(listenerKey) {
this.callBackListener.remove(listenerKey)
}

static getInstance = function (handler) { //静态方法
return this.instance || (this.instance = new PKGame(handler))
}
}

module.exports = ( handler) => {
return PKGame.getInstance( handler)
};

hashmap工具类

/**
* ********* 操作实例 **************
* var map = new HashMap();
* map.put("key1","Value1");
* map.put("key2","Value2");
* map.put("key3","Value3");
* map.put("key4","Value4");
* map.put("key5","Value5");
* alert("size:"+map.size()+" key1:"+map.get("key1"));
* map.remove("key1");
* map.put("key3","newValue");
* var values = map.values();
* for(var i in values){
* document.write(i+":"+values[i]+" ");
* }
* document.write("<br>");
* var keySet = map.keySet();
* for(var i in keySet){
* document.write(i+":"+keySet[i]+" ");
* }
* alert(map.isEmpty());
*/

function HashMap(){
//定义长度
var length = 0;
//创建一个对象
var obj = new Object();

/**
* 判断Map是否为空
*/
this.isEmpty = function(){
return length == 0;
};

/**
* 判断对象中是否包含给定Key
*/
this.containsKey=function(key){
return (key in obj);
};

/**
* 判断对象中是否包含给定的Value
*/
this.containsValue=function(value){
for(var key in obj){
if(obj[key] == value){
return true;
}
}
return false;
};

/**
*向map中添加数据
*/
this.put=function(key,value){
if(!this.containsKey(key)){
length++;
}
obj[key] = value;
};

/**
* 根据给定的Key获得Value
*/
this.get=function(key){
return this.containsKey(key)?obj[key]:null;
};

/**
* 根据给定的Key删除一个值
*/
this.remove=function(key){
if(this.containsKey(key)&&(delete obj[key])){
length--;
}
};

/**
* 获得Map中的所有Value
*/
this.values=function(){
var _values= new Array();
for(var key in obj){
_values.push(obj[key]);
}
return _values;
};

/**
* 获得Map中的所有Key
*/
this.keySet=function(){
var _keys = new Array();
for(var key in obj){
_keys.push(key);
}
return _keys;
};

/**
* 获得Map的长度
*/
this.size = function(){
return length;
};

/**
* 清空Map
*/
this.clear = function(){
length = 0;
obj = new Object();
};
}
module.exports = HashMap;

0 个评论

要回复文章请先登录注册