light-h5-core-lib 2.9.0 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/pool/PoolObj.js +82 -10
- package/type/index.d.ts +33 -1
package/package.json
CHANGED
package/pool/PoolObj.js
CHANGED
|
@@ -8,23 +8,95 @@ exports.PoolObj = void 0;
|
|
|
8
8
|
var PoolObj = /** @class */ (function () {
|
|
9
9
|
/**
|
|
10
10
|
* @param cap 容量(容积)
|
|
11
|
+
* @param initCreateNum 初始化创建的数量 (createCallback != null 有效)
|
|
12
|
+
* @param createCallback Item创建函数
|
|
13
|
+
* @param clearCallback Item清理函数
|
|
14
|
+
* @param destroyCallback Item销毁函数
|
|
11
15
|
*/
|
|
12
|
-
function PoolObj(cap) {
|
|
16
|
+
function PoolObj(cap, initCreateNum, createCallback, clearCallback, destroyCallback) {
|
|
13
17
|
if (cap === void 0) { cap = 5; }
|
|
18
|
+
if (initCreateNum === void 0) { initCreateNum = 0; }
|
|
19
|
+
if (createCallback === void 0) { createCallback = null; }
|
|
20
|
+
if (clearCallback === void 0) { clearCallback = null; }
|
|
21
|
+
if (destroyCallback === void 0) { destroyCallback = null; }
|
|
14
22
|
this._cap = cap;
|
|
23
|
+
this._createCallback = createCallback;
|
|
24
|
+
this._clearCallback = clearCallback;
|
|
25
|
+
this._destroyCallback = destroyCallback;
|
|
15
26
|
this._pool = [];
|
|
27
|
+
this.initCreate(initCreateNum);
|
|
16
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* 初始化一些数量的item
|
|
31
|
+
*/
|
|
32
|
+
PoolObj.prototype.initCreate = function (initCreateNum) {
|
|
33
|
+
if (initCreateNum <= 0)
|
|
34
|
+
return;
|
|
35
|
+
if (!this._createCallback)
|
|
36
|
+
return;
|
|
37
|
+
var maxNum = Math.min(this._cap, initCreateNum);
|
|
38
|
+
for (var i = 0; i < maxNum; i++) {
|
|
39
|
+
this._pool.push(this._createCallback());
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* 放入到对象池
|
|
44
|
+
* @return 放入到对象池是否成功
|
|
45
|
+
*/
|
|
17
46
|
PoolObj.prototype.put = function (obj) {
|
|
18
|
-
if (!obj
|
|
47
|
+
if (!obj)
|
|
48
|
+
return false;
|
|
49
|
+
if (this._pool.length >= this._cap) {
|
|
50
|
+
this._destroyCallback && this._destroyCallback(obj);
|
|
19
51
|
return false;
|
|
52
|
+
}
|
|
53
|
+
this._clearCallback && this._clearCallback(obj);
|
|
20
54
|
this._pool.push(obj);
|
|
21
55
|
return true;
|
|
22
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* 获得一个Item<br>
|
|
59
|
+
* <b style="color:green">如果size==0,则自动使用createCallback创建</b><br>
|
|
60
|
+
* <b style="color:red">⚠️如果size==0 && createCallback==null,则返回null</b>
|
|
61
|
+
*/
|
|
23
62
|
PoolObj.prototype.one = function () {
|
|
24
|
-
if (this._pool.length == 0)
|
|
25
|
-
|
|
63
|
+
if (this._pool.length == 0) {
|
|
64
|
+
if (!this._createCallback)
|
|
65
|
+
return null;
|
|
66
|
+
return this._createCallback();
|
|
67
|
+
}
|
|
26
68
|
return this._pool.shift();
|
|
27
69
|
};
|
|
70
|
+
Object.defineProperty(PoolObj.prototype, "isExistCreateCallback", {
|
|
71
|
+
/**
|
|
72
|
+
* 是否存在Item创建方法
|
|
73
|
+
*/
|
|
74
|
+
get: function () {
|
|
75
|
+
return this._createCallback != null;
|
|
76
|
+
},
|
|
77
|
+
enumerable: false,
|
|
78
|
+
configurable: true
|
|
79
|
+
});
|
|
80
|
+
Object.defineProperty(PoolObj.prototype, "isExistClearCallback", {
|
|
81
|
+
/**
|
|
82
|
+
* 是否存在Item的清理函数
|
|
83
|
+
*/
|
|
84
|
+
get: function () {
|
|
85
|
+
return this._clearCallback != null;
|
|
86
|
+
},
|
|
87
|
+
enumerable: false,
|
|
88
|
+
configurable: true
|
|
89
|
+
});
|
|
90
|
+
Object.defineProperty(PoolObj.prototype, "isExistDestroyCallback", {
|
|
91
|
+
/**
|
|
92
|
+
* 是否存在Item的销毁函数
|
|
93
|
+
*/
|
|
94
|
+
get: function () {
|
|
95
|
+
return this._destroyCallback != null;
|
|
96
|
+
},
|
|
97
|
+
enumerable: false,
|
|
98
|
+
configurable: true
|
|
99
|
+
});
|
|
28
100
|
Object.defineProperty(PoolObj.prototype, "cap", {
|
|
29
101
|
/**
|
|
30
102
|
* 获取容量(容积)
|
|
@@ -58,13 +130,10 @@ var PoolObj = /** @class */ (function () {
|
|
|
58
130
|
var obj;
|
|
59
131
|
for (var i = 0, j = this._pool.length; i < j; i++) {
|
|
60
132
|
obj = this._pool[i];
|
|
61
|
-
if (obj
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
else if (obj.onDestroy) {
|
|
65
|
-
obj.onDestroy();
|
|
133
|
+
if (obj) {
|
|
134
|
+
this._destroyCallback && this._destroyCallback(obj);
|
|
135
|
+
obj = null;
|
|
66
136
|
}
|
|
67
|
-
obj = null;
|
|
68
137
|
}
|
|
69
138
|
this._pool.length = 0;
|
|
70
139
|
};
|
|
@@ -72,6 +141,9 @@ var PoolObj = /** @class */ (function () {
|
|
|
72
141
|
if (!isCleared) {
|
|
73
142
|
this.clear();
|
|
74
143
|
}
|
|
144
|
+
this._createCallback = null;
|
|
145
|
+
this._clearCallback = null;
|
|
146
|
+
this._destroyCallback = null;
|
|
75
147
|
this._pool && (this._pool = null);
|
|
76
148
|
};
|
|
77
149
|
return PoolObj;
|
package/type/index.d.ts
CHANGED
|
@@ -13,12 +13,44 @@ export interface IClear extends IDestroy {
|
|
|
13
13
|
export declare class PoolObj<T> implements IClear {
|
|
14
14
|
private _pool;
|
|
15
15
|
private _cap;
|
|
16
|
+
private _createCallback;
|
|
17
|
+
private _clearCallback;
|
|
18
|
+
private _destroyCallback;
|
|
16
19
|
/**
|
|
17
20
|
* @param cap 容量(容积)
|
|
21
|
+
* @param initCreateNum 初始化创建的数量 (createCallback != null 有效)
|
|
22
|
+
* @param createCallback Item创建函数
|
|
23
|
+
* @param clearCallback Item清理函数
|
|
24
|
+
* @param destroyCallback Item销毁函数
|
|
25
|
+
*/
|
|
26
|
+
constructor(cap?: number, initCreateNum?: number, createCallback?: () => T, clearCallback?: (item: T) => void, destroyCallback?: (item: T) => void);
|
|
27
|
+
/**
|
|
28
|
+
* 初始化一些数量的item
|
|
29
|
+
*/
|
|
30
|
+
private initCreate;
|
|
31
|
+
/**
|
|
32
|
+
* 放入到对象池
|
|
33
|
+
* @return 放入到对象池是否成功
|
|
18
34
|
*/
|
|
19
|
-
constructor(cap?: number);
|
|
20
35
|
put(obj: T): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 获得一个Item<br>
|
|
38
|
+
* <b style="color:green">如果size==0,则自动使用createCallback创建</b><br>
|
|
39
|
+
* <b style="color:red">⚠️如果size==0 && createCallback==null,则返回null</b>
|
|
40
|
+
*/
|
|
21
41
|
one(): T;
|
|
42
|
+
/**
|
|
43
|
+
* 是否存在Item创建方法
|
|
44
|
+
*/
|
|
45
|
+
get isExistCreateCallback(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* 是否存在Item的清理函数
|
|
48
|
+
*/
|
|
49
|
+
get isExistClearCallback(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 是否存在Item的销毁函数
|
|
52
|
+
*/
|
|
53
|
+
get isExistDestroyCallback(): boolean;
|
|
22
54
|
/**
|
|
23
55
|
* 获取容量(容积)
|
|
24
56
|
*/
|