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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "light-h5-core-lib",
3
- "version": "2.9.0",
3
+ "version": "2.9.1",
4
4
  "description": "light core lib",
5
5
  "main": "./LightCore.js",
6
6
  "types": "./type/index.d.ts",
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 || this._pool.length >= this._cap)
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
- return null;
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.destroy) {
62
- obj.destroy();
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
  */