mm_expand 2.3.3 → 2.3.5

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/lib/eventer.js CHANGED
@@ -1,3 +1,4 @@
1
+ /* eslint-disable mm_eslint/function-name */
1
2
  require('./global.js');
2
3
 
3
4
  /**
@@ -5,11 +6,11 @@ require('./global.js');
5
6
  */
6
7
  class Eventer {
7
8
  static config = {
8
- max_listeners: 10, // 最大监听器数量
9
- default_namespace: 'default', // 默认命名空间
9
+ max_list: 10, // 最大监听器数量
10
+ default_name: 'default', // 默认命名空间
10
11
  chain_enabled: true, // 是否启用链式触发
11
12
  auto_clean: true, // 是否自动清理空的事件列表
12
- error_handler: null, // 全局错误处理函数
13
+ error: null, // 全局错误处理函数
13
14
  pause_enabled: true, // 是否启用暂停功能
14
15
  };
15
16
 
@@ -42,7 +43,7 @@ class Eventer {
42
43
  this._paused_namespace = new Set(); // 暂停的命名空间
43
44
  this._paused_global = false; // 全局暂停状态
44
45
  // 初始化默认命名空间
45
- this._namespace[this.config.default_namespace] = true;
46
+ this._namespace[this.config.default_name] = true;
46
47
  }
47
48
 
48
49
  /**
@@ -113,10 +114,10 @@ Eventer.prototype._validateOnParams = function (key, func) {
113
114
  };
114
115
 
115
116
  Eventer.prototype._parseEventKey = function (key, ns) {
116
- const parsed = this._parseKey(key);
117
- const namespace = ns || parsed.namespace;
118
- const event_key = parsed.key;
119
- const full_key = `${namespace}:${event_key}`;
117
+ let parsed = this._parseKey(key);
118
+ let namespace = ns || parsed.namespace;
119
+ let event_key = parsed.key;
120
+ let full_key = `${namespace}:${event_key}`;
120
121
  return { namespace, event_key, full_key };
121
122
  };
122
123
 
@@ -144,12 +145,12 @@ Eventer.prototype._wrapFunction = function (func, params) {
144
145
  }
145
146
 
146
147
  if (params.timeout && typeof params.timeout === 'number' && params.timeout > 0) {
147
- const original_func = wrapped_func;
148
+ let original_func = wrapped_func;
148
149
  wrapped_func = async function (...args) {
149
- const timeout_promise = new Promise((resolve, reject) => {
150
+ const timeoutPromise = new Promise((resolve, reject) => {
150
151
  setTimeout(() => reject(new Error(`事件执行超时 (${params.timeout}ms)`)), params.timeout);
151
152
  });
152
- return Promise.race([original_func.apply(this, args), timeout_promise]);
153
+ return Promise.race([original_func.apply(this, args), timeoutPromise]);
153
154
  };
154
155
  }
155
156
 
@@ -179,10 +180,9 @@ Eventer.prototype._findHandlerIndex = function (list, name) {
179
180
  };
180
181
 
181
182
  Eventer.prototype._checkListenerLimit = function (namespace, event_key, list) {
182
- const max_listeners = this.config.max_listeners;
183
- if (max_listeners > 0 && list.length >= max_listeners) {
184
- this.log('warn', `警告: '${namespace}:${event_key}' 事件的监听器数量已达到 ${max_listeners},可能导致内存泄漏。使用
185
- set_max_listeners() 方法可以增加限制。`);
183
+ let max_list = this.config.max_list;
184
+ if (max_list > 0 && list.length >= max_list) {
185
+ this.log('warn', `警告: '${namespace}:${event_key}' 事件的监听器数量已达到 ${max_list},可能导致内存泄漏。使用 set_max_listeners() 方法可以增加限制。`);
186
186
  }
187
187
  };
188
188
 
@@ -208,7 +208,7 @@ Eventer.prototype._createHandlerResult = function (namespace, index, name, full_
208
208
  */
209
209
  Eventer.prototype.on = function (key, func, name, options) {
210
210
  // 处理参数
211
- const params = this._processOnParams(key, func, name, options);
211
+ let params = this._processOnParams(key, func, name, options);
212
212
 
213
213
  // 验证参数
214
214
  this._validateOnParams(params.key, params.func);
@@ -224,7 +224,7 @@ Eventer.prototype._processOnParams = function (key, func, name, options) {
224
224
  return this._extractOnParams(key);
225
225
  } else {
226
226
  // 便捷方式
227
- const opts = options || {};
227
+ let opts = options || {};
228
228
  return {
229
229
  key: key,
230
230
  func: func,
@@ -247,13 +247,13 @@ Eventer.prototype._addEventHandler = function (params) {
247
247
  this._initNamespace(namespace, event_key);
248
248
 
249
249
  // 设置默认名称
250
- const final_name = eventName || this._generateDefaultName(eventFunc);
250
+ let final_name = eventName || this._generateDefaultName(eventFunc);
251
251
 
252
252
  // 应用节流或防抖
253
- const wrapped_func = this._wrapFunction(eventFunc, params);
253
+ let wrapped_func = this._wrapFunction(eventFunc, params);
254
254
 
255
255
  // 创建事件对象
256
- const obj = this._createHandlerObj({
256
+ let obj = this._createHandlerObj({
257
257
  name: final_name,
258
258
  wrapped_func: wrapped_func,
259
259
  func: eventFunc,
@@ -280,12 +280,12 @@ Eventer.prototype._processOnceParams = function (key, func, name, options) {
280
280
  // 支持两种调用方式:便捷方式和配置对象方式
281
281
  if (typeof key === 'object' && key !== null) {
282
282
  // 配置对象方式
283
- const params = this._extractOnParams(key);
283
+ let params = this._extractOnParams(key);
284
284
  params.times = 1; // 强制设置为仅执行一次
285
285
  return params;
286
286
  } else {
287
287
  // 便捷方式
288
- const opts = options || {};
288
+ let opts = options || {};
289
289
  return {
290
290
  key: key,
291
291
  func: func,
@@ -299,8 +299,8 @@ Eventer.prototype._processOnceParams = function (key, func, name, options) {
299
299
 
300
300
  Eventer.prototype._handleEventAddition = function (config) {
301
301
  const { namespace, event_key, full_key, final_name, obj } = config;
302
- const list = this._dict[namespace][event_key];
303
- const idx = this._findHandlerIndex(list, final_name);
302
+ let list = this._dict[namespace][event_key];
303
+ let idx = this._findHandlerIndex(list, final_name);
304
304
 
305
305
  if (idx >= 0) {
306
306
  // 覆盖已存在的同名监听器
@@ -330,7 +330,7 @@ Eventer.prototype._handleEventAddition = function (config) {
330
330
  */
331
331
  Eventer.prototype.once = function (key, func, name, options) {
332
332
  // 处理参数
333
- const params = this._processOnceParams(key, func, name, options);
333
+ let params = this._processOnceParams(key, func, name, options);
334
334
 
335
335
  // 验证参数
336
336
  this._validateOnParams(params.key, params.func);
@@ -354,11 +354,11 @@ Eventer.prototype._validateExec = function (key) {
354
354
  };
355
355
 
356
356
  Eventer.prototype._createCtx = function (key, params) {
357
- const parsed = this._parseKey(key);
358
- const namespace = parsed.namespace;
359
- const event_key = parsed.key;
360
- const full_key = `${namespace}:${event_key}`;
361
- const start_time = Date.now();
357
+ let parsed = this._parseKey(key);
358
+ let namespace = parsed.namespace;
359
+ let event_key = parsed.key;
360
+ let full_key = `${namespace}:${event_key}`;
361
+ let start_time = Date.now();
362
362
 
363
363
  const ctx = {
364
364
  namespace,
@@ -385,7 +385,7 @@ Eventer.prototype._createCtx = function (key, params) {
385
385
  Eventer.prototype._cancelTasks = function (full_key) {
386
386
  try {
387
387
  if (this._tasks.has(full_key)) {
388
- const tasks = this._tasks.get(full_key);
388
+ let tasks = this._tasks.get(full_key);
389
389
  tasks.forEach(task => {
390
390
  if (task && typeof task.cancel === 'function') {
391
391
  try {
@@ -516,8 +516,8 @@ Eventer.prototype._buildSafeResult = function (ctx) {
516
516
  results: ctx.results || [],
517
517
  cancelled: ctx.cancelled || false,
518
518
  cancel: ctx.cancel || (() => { }),
519
- race_result: ctx.race_result,
520
- waterfall_result: ctx.results && ctx.results.length > 0 ? ctx.results[ctx.results.length - 1]
519
+ race: ctx.race_result,
520
+ waterfall: ctx.results && ctx.results.length > 0 ? ctx.results[ctx.results.length - 1]
521
521
  : undefined
522
522
  };
523
523
  } catch (return_error) {
@@ -543,7 +543,7 @@ Eventer.prototype._execute = async function (key, options = {}, ...params) {
543
543
  return this._createPausedResult();
544
544
  }
545
545
 
546
- const list = this._dict[namespace] && this._dict[namespace][event_key];
546
+ let list = this._dict[namespace] && this._dict[namespace][event_key];
547
547
  const arr = [];
548
548
 
549
549
  if (list && list.length > 0) {
@@ -592,7 +592,7 @@ Eventer.prototype._executeEventList = async function (config) {
592
592
 
593
593
  this._initTaskList(full_key);
594
594
 
595
- const cancelled = await this._runBeforeMiddleware(ctx, full_key);
595
+ let cancelled = await this._runBeforeMiddleware(ctx, full_key);
596
596
  if (cancelled) {
597
597
  return {
598
598
  results: [],
@@ -618,7 +618,7 @@ Eventer.prototype._executeSequential = async function (config) {
618
618
  const { list, params, ctx, full_key, arr } = config;
619
619
 
620
620
  for (let i = 0; i < list.length && !ctx.cancelled; i++) {
621
- const o = list[i];
621
+ let o = list[i];
622
622
  ctx.executed++;
623
623
  o.last_executed = Date.now();
624
624
 
@@ -631,11 +631,11 @@ Eventer.prototype._execSingleTask = async function (o, params, ctx, options) {
631
631
  const { full_key, arr } = options;
632
632
 
633
633
  // 创建任务
634
- const task = this._createTask(o, full_key);
634
+ let task = this._createTask(o, full_key);
635
635
 
636
636
  try {
637
637
  // 执行事件处理函数
638
- const result = await o.func.apply(o, params);
638
+ let result = await o.func.apply(o, params);
639
639
 
640
640
  // 处理成功结果
641
641
  this._handleSuccessResult({ result, o, ctx, arr, task });
@@ -646,7 +646,7 @@ Eventer.prototype._execSingleTask = async function (o, params, ctx, options) {
646
646
  };
647
647
 
648
648
  Eventer.prototype._createTask = function (o, full_key) {
649
- const task_id = `${o.name}_${Date.now()}`;
649
+ let task_id = `${o.name}_${Date.now()}`;
650
650
  let cancelled = false;
651
651
  const task = {
652
652
  id: task_id,
@@ -657,7 +657,7 @@ Eventer.prototype._createTask = function (o, full_key) {
657
657
  };
658
658
 
659
659
  // 添加到进行中的任务列表
660
- const tasks = this._tasks.get(full_key);
660
+ let tasks = this._tasks.get(full_key);
661
661
  tasks.push(task);
662
662
 
663
663
  return { task, tasks, cancelled };
@@ -712,18 +712,19 @@ Eventer.prototype._handleTaskError = function (e, o, ctx, task) {
712
712
  */
713
713
  Eventer.prototype._executeParallel = async function (config) {
714
714
  const { list, params, ctx, full_key, arr } = config;
715
- const concurrency = this._getConcurrency(params);
716
- const processed_results = new Array(list.length);
715
+ let concurrency = this._getConcurrency(params);
716
+ // eslint-disable-next-line mm_eslint/class-instance-name
717
+ const proc_results = new Array(list.length);
717
718
 
718
719
  if (concurrency < Infinity) {
719
720
  await this._executeBatches({
720
- list, params, ctx, full_key, arr, concurrency, processed_results
721
+ list, params, ctx, full_key, arr, concurrency, proc_results
721
722
  });
722
723
  } else {
723
- await this._executeAllParallel({ list, params, ctx, full_key, arr, processed_results });
724
+ await this._executeAllParallel({ list, params, ctx, full_key, arr, proc_results });
724
725
  }
725
726
 
726
- this._setResults(ctx, processed_results);
727
+ this._setResults(ctx, proc_results);
727
728
  };
728
729
 
729
730
  Eventer.prototype._getConcurrency = function (params) {
@@ -732,14 +733,14 @@ Eventer.prototype._getConcurrency = function (params) {
732
733
  };
733
734
 
734
735
  Eventer.prototype._executeBatches = async function (config) {
735
- const { list, params, ctx, full_key, arr, concurrency, processed_results } = config;
736
+ const { list, params, ctx, full_key, arr, concurrency, proc_results } = config;
736
737
 
737
738
  for (let i = 0; i < list.length && !ctx.cancelled; i += concurrency) {
738
- const batch = list.slice(i, i + concurrency);
739
- const batch_promises = batch.map((obj, batch_idx) => {
740
- const global_idx = i + batch_idx;
739
+ let batch = list.slice(i, i + concurrency);
740
+ let batch_promises = batch.map((obj, batch_idx) => {
741
+ let global = i + batch_idx; // eslint-disable-line mm_eslint/variable-name
741
742
  return this._executeSingleTask({
742
- obj, params, ctx, full_key, arr, idx: global_idx, processed_results
743
+ obj, params, ctx, full_key, arr, idx: global, proc_results
743
744
  });
744
745
  });
745
746
 
@@ -748,17 +749,17 @@ Eventer.prototype._executeBatches = async function (config) {
748
749
  };
749
750
 
750
751
  Eventer.prototype._executeAllParallel = async function (config) {
751
- const { list, params, ctx, full_key, arr, processed_results } = config;
752
+ const { list, params, ctx, full_key, arr, proc_results } = config;
752
753
 
753
- const promises = list.map((obj, idx) => {
754
- return this._executeSingleTask({ obj, params, ctx, full_key, arr, idx, processed_results });
754
+ let promises = list.map((obj, idx) => {
755
+ return this._executeSingleTask({ obj, params, ctx, full_key, arr, idx, proc_results });
755
756
  });
756
757
 
757
758
  await Promise.allSettled(promises);
758
759
  };
759
760
 
760
- Eventer.prototype._setResults = function (ctx, processed_results) {
761
- ctx.results = processed_results.filter(result => result !== undefined);
761
+ Eventer.prototype._setResults = function (ctx, proc_results) {
762
+ ctx.results = proc_results.filter(result => result !== undefined);
762
763
  };
763
764
 
764
765
  /**
@@ -768,16 +769,16 @@ Eventer.prototype._setResults = function (ctx, processed_results) {
768
769
  */
769
770
  Eventer.prototype._executeWaterfall = async function (config) {
770
771
  const { list, params, ctx, full_key, arr, initial_value } = config;
771
- let waterfall_value = this._getInitialValue(params, initial_value);
772
+ let wate_value = this._getInitialValue(params, initial_value);
772
773
 
773
774
  for (let i = 0; i < list.length && !ctx.cancelled; i++) {
774
- const obj = list[i];
775
+ let obj = list[i];
775
776
  ctx.executed++;
776
777
  obj.last_executed = Date.now();
777
778
 
778
- const task = this._createWaterfallTask(obj, full_key);
779
- waterfall_value = await this._execWaterfallStep({
780
- obj, params, ctx, arr, task, waterfall_value
779
+ let task = this._createWaterfallTask(obj, full_key);
780
+ wate_value = await this._execWaterfallStep({
781
+ obj, params, ctx, arr, task, wate_value
781
782
  });
782
783
  }
783
784
  };
@@ -787,7 +788,7 @@ Eventer.prototype._getInitialValue = function (params, initial_value) {
787
788
  };
788
789
 
789
790
  Eventer.prototype._createWaterfallTask = function (obj, full_key) {
790
- const task_id = `${obj.name}_${Date.now()}`;
791
+ let task_id = `${obj.name}_${Date.now()}`;
791
792
  let cancelled = false;
792
793
  const task = {
793
794
  id: task_id,
@@ -797,21 +798,21 @@ Eventer.prototype._createWaterfallTask = function (obj, full_key) {
797
798
  cancel: () => { cancelled = true; }
798
799
  };
799
800
 
800
- const tasks = this._tasks.get(full_key);
801
+ let tasks = this._tasks.get(full_key);
801
802
  tasks.push(task);
802
803
 
803
804
  return { task, tasks, cancelled };
804
805
  };
805
806
 
806
807
  Eventer.prototype._execWaterfallStep = async function (config) {
807
- const { obj, params, ctx, arr, task, waterfall_value } = config;
808
+ const { obj, params, ctx, arr, task, wate_value } = config;
808
809
  try {
809
- const result = await obj.func.apply(obj, [waterfall_value, ...params.slice(1)]);
810
+ let result = await obj.func.apply(obj, [wate_value, ...params.slice(1)]);
810
811
  this._handleWfSuccess({ result, obj, ctx, arr, task });
811
812
  return result;
812
813
  } catch (e) {
813
814
  this._handleWfError({ e, obj, ctx, task });
814
- return waterfall_value;
815
+ return wate_value;
815
816
  }
816
817
  };
817
818
 
@@ -867,7 +868,7 @@ Eventer.prototype._callErrorHandler = function (e, obj, ctx) {
867
868
  */
868
869
  Eventer.prototype._executeRace = async function (config) {
869
870
  const { list, params, ctx, full_key, arr } = config;
870
- const promises = this._createRacePromises({ list, params, ctx, full_key, arr });
871
+ let promises = this._createRacePromises({ list, params, ctx, full_key, arr });
871
872
 
872
873
  return await this._runRace(promises);
873
874
  };
@@ -877,11 +878,11 @@ Eventer.prototype._createRacePromises = function (config) {
877
878
  const promises = [];
878
879
 
879
880
  for (let i = 0; i < list.length && !ctx.cancelled; i++) {
880
- const obj = list[i];
881
+ let obj = list[i];
881
882
  ctx.executed++;
882
883
  obj.last_executed = Date.now();
883
884
 
884
- const promise = this._createRacePromise({ obj, params, ctx, full_key, arr });
885
+ let promise = this._createRacePromise({ obj, params, ctx, full_key, arr });
885
886
  promises.push(promise);
886
887
  }
887
888
 
@@ -890,11 +891,11 @@ Eventer.prototype._createRacePromises = function (config) {
890
891
 
891
892
  Eventer.prototype._createRacePromise = function (config) {
892
893
  const { obj, params, ctx, full_key, arr } = config;
893
- const task = this._createRaceTask(obj, full_key);
894
+ let task = this._createRaceTask(obj, full_key);
894
895
 
895
896
  return (async () => {
896
897
  try {
897
- const result = await obj.func.apply(obj, params);
898
+ let result = await obj.func.apply(obj, params);
898
899
  return this._handleRaceSuccess({ result, obj, ctx, arr, task });
899
900
  } catch (e) {
900
901
  return this._handleRaceError(e, obj, ctx, task);
@@ -905,7 +906,7 @@ Eventer.prototype._createRacePromise = function (config) {
905
906
  };
906
907
 
907
908
  Eventer.prototype._createRaceTask = function (obj, full_key) {
908
- const task_id = `${obj.name}_${Date.now()}`;
909
+ let task_id = `${obj.name}_${Date.now()}`;
909
910
  let cancelled = false;
910
911
  const task = {
911
912
  id: task_id,
@@ -915,7 +916,7 @@ Eventer.prototype._createRaceTask = function (obj, full_key) {
915
916
  cancel: () => { cancelled = true; }
916
917
  };
917
918
 
918
- const tasks = this._tasks.get(full_key);
919
+ let tasks = this._tasks.get(full_key);
919
920
  tasks.push(task);
920
921
 
921
922
  return { task, tasks, cancelled };
@@ -951,8 +952,8 @@ Eventer.prototype._handleRaceError = function (e, obj, ctx, task) {
951
952
 
952
953
  Eventer.prototype._runRace = async function (promises) {
953
954
  if (promises.length > 0) {
954
- const race_result = await Promise.race(promises);
955
- return race_result;
955
+ let race = await Promise.race(promises);
956
+ return race;
956
957
  }
957
958
  return null;
958
959
  };
@@ -963,22 +964,22 @@ Eventer.prototype._runRace = async function (promises) {
963
964
  * @private
964
965
  */
965
966
  Eventer.prototype._executeSingleTask = async function (config) {
966
- const { obj, params, ctx, full_key, arr, idx, processed_results } = config;
967
+ const { obj, params, ctx, full_key, arr, idx, proc_results } = config;
967
968
  obj.last_executed = Date.now();
968
969
 
969
970
  // 创建任务
970
- const task_info = this._createParallelTask(obj, full_key);
971
+ let task_info = this._createParallelTask(obj, full_key);
971
972
 
972
973
  try {
973
- const result = await obj.func.apply(obj, params);
974
- this._handleTaskSuccess({ result, obj, ctx, arr, idx, processed_results, task_info });
974
+ let result = await obj.func.apply(obj, params);
975
+ this._handleTaskSuccess({ result, obj, ctx, arr, idx, proc_results, task_info });
975
976
  } catch (err) {
976
- this._handleTaskError({ err, obj, ctx, idx, processed_results, task_info });
977
+ this._handleTaskError({ err, obj, ctx, idx, proc_results, task_info });
977
978
  }
978
979
  };
979
980
 
980
981
  Eventer.prototype._createParallelTask = function (obj, full_key) {
981
- const task_id = `${obj.name}_${Date.now()}`;
982
+ let task_id = `${obj.name}_${Date.now()}`;
982
983
  let cancelled = false;
983
984
  const task = {
984
985
  id: task_id,
@@ -989,20 +990,20 @@ Eventer.prototype._createParallelTask = function (obj, full_key) {
989
990
  };
990
991
 
991
992
  // 添加到进行中的任务列表
992
- const tasks = this._tasks.get(full_key);
993
+ let tasks = this._tasks.get(full_key);
993
994
  tasks.push(task);
994
995
 
995
996
  return { task, tasks, cancelled };
996
997
  };
997
998
 
998
999
  Eventer.prototype._handleTaskSuccess = function (config) {
999
- const { result, obj, ctx, arr, idx, processed_results, task_info } = config;
1000
+ const { result, obj, ctx, arr, idx, proc_results, task_info } = config;
1000
1001
 
1001
1002
  // 从进行中的任务列表中移除
1002
1003
  task_info.tasks.splice(task_info.tasks.indexOf(task_info.task), 1);
1003
1004
 
1004
1005
  if (!task_info.cancelled && !ctx.cancelled) {
1005
- processed_results[idx] = result;
1006
+ proc_results[idx] = result;
1006
1007
 
1007
1008
  // 处理执行次数限制
1008
1009
  if (obj.times >= 0) {
@@ -1015,7 +1016,7 @@ Eventer.prototype._handleTaskSuccess = function (config) {
1015
1016
  };
1016
1017
 
1017
1018
  Eventer.prototype._handleTaskError = function (config) {
1018
- const { err, obj, ctx, idx, processed_results, task_info } = config;
1019
+ const { err, obj, ctx, idx, proc_results, task_info } = config;
1019
1020
 
1020
1021
  // 从进行中的任务列表中移除
1021
1022
  task_info.tasks.splice(task_info.tasks.indexOf(task_info.task), 1);
@@ -1027,7 +1028,7 @@ Eventer.prototype._handleTaskError = function (config) {
1027
1028
  handler: obj.name,
1028
1029
  timestamp: Date.now()
1029
1030
  };
1030
- processed_results[idx] = error_result;
1031
+ proc_results[idx] = error_result;
1031
1032
 
1032
1033
  // 全局错误处理器
1033
1034
  if (this.config.error_handler && typeof this.config.error_handler === 'function') {
@@ -1055,7 +1056,7 @@ Eventer.prototype.run = async function (key, ...params) {
1055
1056
  Eventer.prototype.emit = function (key, ...params) {
1056
1057
  // 内部调用 _execute 方法,但不等待结果
1057
1058
  try {
1058
- const result = this._execute(key, { exec_mode: 'sequential' }, ...params);
1059
+ let result = this._execute(key, { exec_mode: 'sequential' }, ...params);
1059
1060
  result.catch(e => this.log('error', '事件异步执行失败:', e));
1060
1061
  return {
1061
1062
  ...result,
@@ -1094,7 +1095,7 @@ Eventer.prototype.emit = function (key, ...params) {
1094
1095
  */
1095
1096
  Eventer.prototype.emitWait = async function (key, ...args) {
1096
1097
  try {
1097
- const result = await this._execute(key, { exec_mode: 'sequential' }, ...args);
1098
+ let result = await this._execute(key, { exec_mode: 'sequential' }, ...args);
1098
1099
  return result.results || [];
1099
1100
  } catch (error) {
1100
1101
  this.log('error', `等待事件触发失败 [${key}]`, error);
@@ -1119,13 +1120,13 @@ Eventer.prototype.emitAsync = async function (key, ...args) {
1119
1120
 
1120
1121
  Eventer.prototype._execAsync = function (key, args) {
1121
1122
  // 解析命名空间
1122
- const parsed = this._parseKey(key);
1123
- const namespace = parsed.namespace;
1124
- const event_key = parsed.key;
1125
- const full_key = `${namespace}:${event_key}`;
1123
+ let parsed = this._parseKey(key);
1124
+ let namespace = parsed.namespace;
1125
+ let event_key = parsed.key;
1126
+ let full_key = `${namespace}:${event_key}`;
1126
1127
 
1127
1128
  // 获取事件列表
1128
- const list = this._dict[namespace] && this._dict[namespace][event_key];
1129
+ let list = this._dict[namespace] && this._dict[namespace][event_key];
1129
1130
 
1130
1131
  if (!list || list.length === 0) {
1131
1132
  return false;
@@ -1179,7 +1180,7 @@ Eventer.prototype._handleSyncError = function (sync_error, full_key, args) {
1179
1180
  */
1180
1181
  Eventer.prototype.emitAll = async function (key, ...args) {
1181
1182
  try {
1182
- const result = await this._execute(key, { exec_mode: 'parallel' }, ...args);
1183
+ let result = await this._execute(key, { exec_mode: 'parallel' }, ...args);
1183
1184
  return result.results || [];
1184
1185
  } catch (error) {
1185
1186
  this.log('error', `并发事件触发失败 [${key}]`, error);
@@ -1195,14 +1196,61 @@ Eventer.prototype.emitAll = async function (key, ...args) {
1195
1196
  */
1196
1197
  Eventer.prototype.emitRace = async function (key, ...args) {
1197
1198
  try {
1198
- const result = await this._execute(key, { exec_mode: 'race' }, ...args);
1199
- return result.race_result || null;
1199
+ let result = await this._execute(key, { exec_mode: 'race' }, ...args);
1200
+ return result.race || null;
1200
1201
  } catch (error) {
1201
1202
  this.log('error', `竞争事件触发失败 [${key}]`, error);
1202
1203
  return null;
1203
1204
  }
1204
1205
  };
1205
1206
 
1207
+ /**
1208
+ * 异步触发事件,返回第一个有返回值的结果(不阻塞其他监听器)
1209
+ * @param {string} key 事件关键字,支持namespace:key格式
1210
+ * @param {...any} args 事件参数
1211
+ * @returns {Promise} - 第一个有返回值(非 undefined)的监听器结果
1212
+ * 所有监听器并行执行,返回第一个有返回值(非 undefined)的结果,
1213
+ * 返回 undefined 的监听器被跳过,其他监听器继续在后台执行不受影响
1214
+ */
1215
+ Eventer.prototype.emitFirst = async function (key, ...args) {
1216
+ try {
1217
+ let parsed = this._parseKey(key);
1218
+ let namespace = parsed.namespace;
1219
+ let event_key = parsed.key;
1220
+
1221
+ let list = this._dict[namespace] && this._dict[namespace][event_key];
1222
+ if (!list || list.length === 0) {
1223
+ return undefined;
1224
+ }
1225
+
1226
+ return await new Promise(resolve => {
1227
+ let settled = false;
1228
+ let pending = list.length;
1229
+
1230
+ for (let handler of list) {
1231
+ Promise.resolve(handler.func(...args)).then(result => {
1232
+ if (!settled && result !== undefined) {
1233
+ settled = true;
1234
+ resolve(result);
1235
+ }
1236
+ pending--;
1237
+ if (pending === 0 && !settled) {
1238
+ resolve(undefined);
1239
+ }
1240
+ }).catch(() => {
1241
+ pending--;
1242
+ if (pending === 0 && !settled) {
1243
+ resolve(undefined);
1244
+ }
1245
+ });
1246
+ }
1247
+ });
1248
+ } catch (error) {
1249
+ this.log('error', `首个结果事件触发失败 [${key}]`, error);
1250
+ return undefined;
1251
+ }
1252
+ };
1253
+
1206
1254
  /**
1207
1255
  * 异步触发事件,瀑布流执行
1208
1256
  * @param {string} key 事件关键字,支持namespace:key格式
@@ -1212,11 +1260,11 @@ Eventer.prototype.emitRace = async function (key, ...args) {
1212
1260
  */
1213
1261
  Eventer.prototype.emitWaterfall = async function (key, value, ...args) {
1214
1262
  try {
1215
- const result = await this._execute(key, {
1263
+ let result = await this._execute(key, {
1216
1264
  exec_mode: 'waterfall',
1217
1265
  initial_value: value
1218
1266
  }, ...args);
1219
- return result.waterfall_result || value;
1267
+ return result.waterfall || value;
1220
1268
  } catch (error) {
1221
1269
  this.log('error', `瀑布流事件触发失败 [${key}]`, error);
1222
1270
  return value;
@@ -1249,16 +1297,16 @@ Eventer.prototype._ensureNs = function (name) {
1249
1297
  * @returns {object} 包含结果和需要移除的事件名称的对象
1250
1298
  */
1251
1299
  Eventer.prototype._execNsEvents = async function (name, key, params) {
1252
- const list = this._dict[name][key];
1300
+ let list = this._dict[name][key];
1253
1301
  const namespace_results = [];
1254
1302
  const arr = []; // 存储需要移除的事件
1255
1303
 
1256
1304
  // 执行事件处理函数
1257
1305
  for (let i = 0; i < list.length; i++) {
1258
1306
  try {
1259
- const obj = list[i];
1307
+ let obj = list[i];
1260
1308
  // 执行事件处理函数
1261
- const result = await obj.func.apply(obj, params);
1309
+ let result = await obj.func.apply(obj, params);
1262
1310
  namespace_results.push(result);
1263
1311
 
1264
1312
  // 处理执行次数限制
@@ -1279,7 +1327,7 @@ Eventer.prototype._execNsEvents = async function (name, key, params) {
1279
1327
  }
1280
1328
  }
1281
1329
 
1282
- return { namespace_results, arr };
1330
+ return { name_results, arr };
1283
1331
  };
1284
1332
 
1285
1333
  /**
@@ -1298,29 +1346,23 @@ Eventer.prototype._removeEvents = function (name, key, arr) {
1298
1346
  Eventer.prototype.emitAllNamespaces = async function (key, ...params) {
1299
1347
  const results = {};
1300
1348
  // 确保遍历所有命名空间,包括动态创建的
1301
- for (const name in this._dict) {
1349
+ for (let name in this._dict) {
1302
1350
  // 确保命名空间在namespace映射中
1303
1351
  this._ensureNs(name);
1304
1352
 
1305
1353
  // 检查该命名空间下是否存在该事件
1306
1354
  if (this._dict[name] && this._dict[name][key]) {
1307
- const { namespace_results, arr } = await this._execNsEvents(name, key, params);
1355
+ const { name_results, arr } = await this._execNsEvents(name, key, params);
1308
1356
 
1309
1357
  // 移除已执行完的事件
1310
1358
  this._removeEvents(name, key, arr);
1311
1359
 
1312
- results[name] = namespace_results;
1360
+ results[name] = name_results;
1313
1361
  }
1314
1362
  }
1315
1363
  return results;
1316
1364
  };
1317
1365
 
1318
- /**
1319
- * 删除事件
1320
- * @param {string} key 事件关键字,支持namespace:key格式
1321
- * @param {number | string} index_or_name 事件集索引或名称
1322
- * @returns {boolean} 删除成功返回true,否则返回false
1323
- */
1324
1366
  /**
1325
1367
  * 删除单个事件监听器
1326
1368
  * @private
@@ -1352,7 +1394,7 @@ Eventer.prototype._removeSingleEvent = function (events, index_or_name) {
1352
1394
  * @private
1353
1395
  * @param {string} namespace 命名空间
1354
1396
  * @param {string} key 事件关键字
1355
- * @param event_key
1397
+ * @param {string} event_key 事件键
1356
1398
  * @param {string} full_key 完整事件关键字
1357
1399
  * @returns {boolean} 删除成功返回true
1358
1400
  */
@@ -1367,7 +1409,7 @@ Eventer.prototype._removeEntireEvent = function (namespace, event_key, full_key)
1367
1409
 
1368
1410
  // 清理相关的事件链
1369
1411
  if (this._chain) {
1370
- for (const chain_key in this._chain) {
1412
+ for (let chain_key in this._chain) {
1371
1413
  if (chain_key === full_key) {
1372
1414
  delete this._chain[chain_key];
1373
1415
  } else if (this._chain[chain_key] && Array.is_array(this._chain[chain_key]) &&
@@ -1413,6 +1455,12 @@ Eventer.prototype._autoCleanEvents = function (namespace, key, events, index_or_
1413
1455
  }
1414
1456
  };
1415
1457
 
1458
+ /**
1459
+ * 删除事件
1460
+ * @param {string} key 事件关键字,支持namespace:key格式
1461
+ * @param {number | string} index_or_name 事件集索引或名称
1462
+ * @returns {boolean} 删除成功返回true,否则返回false
1463
+ */
1416
1464
  Eventer.prototype.off = function (key, index_or_name) {
1417
1465
  // 入参校验
1418
1466
  if (!key || typeof key !== 'string') {
@@ -1420,17 +1468,17 @@ Eventer.prototype.off = function (key, index_or_name) {
1420
1468
  }
1421
1469
 
1422
1470
  // 解析命名空间
1423
- const parsed = this._parseKey(key);
1424
- const namespace = parsed.namespace;
1425
- const event_key = parsed.key;
1426
- const full_key = `${namespace}:${event_key}`;
1471
+ let parsed = this._parseKey(key);
1472
+ let namespace = parsed.namespace;
1473
+ let event_key = parsed.key;
1474
+ let full_key = `${namespace}:${event_key}`;
1427
1475
 
1428
1476
  // 检查事件是否存在
1429
1477
  if (!this._dict[namespace] || !this._dict[namespace][event_key]) {
1430
1478
  return false;
1431
1479
  }
1432
1480
 
1433
- const events = this._dict[namespace][event_key];
1481
+ let events = this._dict[namespace][event_key];
1434
1482
  let removed = false;
1435
1483
 
1436
1484
  if (index_or_name) {
@@ -1481,9 +1529,9 @@ Eventer.prototype.getEvents = function (key) {
1481
1529
  }
1482
1530
  // 返回深拷贝的所有事件
1483
1531
  const result = {};
1484
- for (const name in this._dict) {
1532
+ for (let name in this._dict) {
1485
1533
  result[name] = {};
1486
- for (const key in this._dict[name]) {
1534
+ for (let key in this._dict[name]) {
1487
1535
  result[name][key] = [...this._dict[name][key]];
1488
1536
  }
1489
1537
  }
@@ -1535,7 +1583,7 @@ Eventer.prototype.clear = function (keepnamespace = false) {
1535
1583
  if (!keepnamespace) {
1536
1584
  this._namespace = {};
1537
1585
  // 重新初始化默认命名空间
1538
- this._namespace[this.config.default_namespace] = true;
1586
+ this._namespace[this.config.default_name] = true;
1539
1587
  }
1540
1588
 
1541
1589
  return this;
@@ -1549,16 +1597,16 @@ Eventer.prototype.clear = function (keepnamespace = false) {
1549
1597
  */
1550
1598
  Eventer.prototype.has = function (key, name) {
1551
1599
  // 解析命名空间
1552
- const parsed = this._parseKey(key);
1553
- const namespace = parsed.namespace;
1554
- const event_key = parsed.key;
1600
+ let parsed = this._parseKey(key);
1601
+ let namespace = parsed.namespace;
1602
+ let event_key = parsed.key;
1555
1603
 
1556
1604
  if (!this._dict[namespace] || !this._dict[namespace][event_key]) {
1557
1605
  return false;
1558
1606
  }
1559
1607
 
1560
1608
  if (name) {
1561
- const list = this._dict[namespace][event_key];
1609
+ let list = this._dict[namespace][event_key];
1562
1610
  for (let i = 0; i < list.length; i++) {
1563
1611
  if (list[i].name === name) {
1564
1612
  return true;
@@ -1580,10 +1628,10 @@ Eventer.prototype.count = function (key) {
1580
1628
  // 解析可能的命名空间模式
1581
1629
  if (key.ends_with(':*')) {
1582
1630
  // 统计命名空间下所有事件
1583
- const namespace = key.split(':')[0];
1631
+ let namespace = key.split(':')[0];
1584
1632
  if (this._dict[namespace]) {
1585
1633
  let total = 0;
1586
- for (const key in this._dict[namespace]) {
1634
+ for (let key in this._dict[namespace]) {
1587
1635
  total += this._dict[namespace][key].length;
1588
1636
  }
1589
1637
  return total;
@@ -1600,8 +1648,8 @@ Eventer.prototype.count = function (key) {
1600
1648
 
1601
1649
  // 统计所有事件
1602
1650
  let total = 0;
1603
- for (const name in this._dict) {
1604
- for (const key in this._dict[name]) {
1651
+ for (let name in this._dict) {
1652
+ for (let key in this._dict[name]) {
1605
1653
  total += this._dict[name][key].length;
1606
1654
  }
1607
1655
  }
@@ -1640,7 +1688,7 @@ Eventer.prototype.chain = function (from_event, to_events) {
1640
1688
  this._validateChainInput(from_event, to_events);
1641
1689
 
1642
1690
  // 解析源事件
1643
- const full_from_event = this._getFullEventKey(from_event);
1691
+ let full_from_event = this._getFullEventKey(from_event);
1644
1692
 
1645
1693
  // 初始化事件链
1646
1694
  this._initEventChain(full_from_event);
@@ -1670,7 +1718,7 @@ Eventer.prototype._initEventChain = function (full_from_event) {
1670
1718
 
1671
1719
  Eventer.prototype._addTargetEvents = function (full_from_event, to_events) {
1672
1720
  // 确保目标事件是数组
1673
- const target_events = Array.is_array(to_events) ? to_events : [to_events];
1721
+ let target_events = Array.is_array(to_events) ? to_events : [to_events];
1674
1722
 
1675
1723
  for (let i = 0; i < target_events.length; i++) {
1676
1724
  this._addSingleTargetEvent(full_from_event, target_events[i]);
@@ -1683,7 +1731,7 @@ Eventer.prototype._addTargetEvent = function (full_from_event, to_event) {
1683
1731
  }
1684
1732
 
1685
1733
  // 解析目标事件
1686
- const full_to_event = this._getFullEventKey(to_event);
1734
+ let full_to_event = this._getFullEventKey(to_event);
1687
1735
 
1688
1736
  // 避免重复添加
1689
1737
  if (!this._chain[full_from_event].includes(full_to_event)) {
@@ -1705,7 +1753,7 @@ Eventer.prototype.unchain = function (from_event, to_events) {
1705
1753
 
1706
1754
  // 解析源事件
1707
1755
  const { namespace: from_namespace, key: fromkey } = this._parseKey(from_event);
1708
- const full_from_event = `${from_namespace}:${fromkey}`;
1756
+ let full_from_event = `${from_namespace}:${fromkey}`;
1709
1757
 
1710
1758
  // 如果源事件不存在事件链,直接返回
1711
1759
  if (!this._chain[full_from_event]) {
@@ -1723,7 +1771,7 @@ Eventer.prototype.unchain = function (from_event, to_events) {
1723
1771
  };
1724
1772
 
1725
1773
  Eventer.prototype._removeTargetEvents = function (full_from_event, to_events) {
1726
- const target_events = Array.is_array(to_events) ? to_events : [to_events];
1774
+ let target_events = Array.is_array(to_events) ? to_events : [to_events];
1727
1775
 
1728
1776
  for (let i = 0; i < target_events.length; i++) {
1729
1777
  this._removeTargetEvent(full_from_event, target_events[i]);
@@ -1742,7 +1790,7 @@ Eventer.prototype._removeTargetEvent = function (full_from_event, to_event) {
1742
1790
 
1743
1791
  // 解析目标事件
1744
1792
  const { namespace: to_namespace, key: tokey } = this._parseKey(to_event);
1745
- const full_to_event = `${to_namespace}:${tokey}`;
1793
+ let full_to_event = `${to_namespace}:${tokey}`;
1746
1794
 
1747
1795
  // 检查事件链是否存在
1748
1796
  if (!this._chain[full_from_event]) {
@@ -1751,7 +1799,7 @@ Eventer.prototype._removeTargetEvent = function (full_from_event, to_event) {
1751
1799
  }
1752
1800
 
1753
1801
  // 查找并删除事件链
1754
- const index = this._chain[full_from_event].indexOf(full_to_event);
1802
+ let index = this._chain[full_from_event].indexOf(full_to_event);
1755
1803
  if (index === -1) {
1756
1804
  this.log('warn', `事件链不存在: ${full_from_event} -> ${full_to_event}`);
1757
1805
  return;
@@ -1772,7 +1820,7 @@ Eventer.prototype.getChains = function (event) {
1772
1820
 
1773
1821
  // 解析事件
1774
1822
  const { namespace, key } = this._parseKey(event);
1775
- const full_event = `${namespace}:${key}`;
1823
+ let full_event = `${namespace}:${key}`;
1776
1824
 
1777
1825
  return this._chain[full_event] ? [...this._chain[full_event]] : [];
1778
1826
  };
@@ -1790,7 +1838,7 @@ Eventer.prototype._triggerChain = async function (current_event, params) {
1790
1838
  }
1791
1839
 
1792
1840
  // 循环触发下一级事件
1793
- for (const next_event of this._chain[current_event]) {
1841
+ for (let next_event of this._chain[current_event]) {
1794
1842
  await this._execChainItem(next_event, params);
1795
1843
  }
1796
1844
  };
@@ -1805,11 +1853,11 @@ Eventer.prototype._triggerChain = async function (current_event, params) {
1805
1853
  Eventer.prototype._execChainItem = async function (key, params) {
1806
1854
  // 解析命名空间
1807
1855
  const { namespace, key: innerkey } = this._parseKey(key);
1808
- const list = this._dict[namespace] && this._dict[namespace][innerkey];
1856
+ let list = this._dict[namespace] && this._dict[namespace][innerkey];
1809
1857
  const results = [];
1810
1858
 
1811
1859
  // 创建上下文对象
1812
- const ctx = this._createChainContext(namespace, innerkey, key, params);
1860
+ let ctx = this._createChainContext(namespace, innerkey, key, params);
1813
1861
 
1814
1862
  // 如果有事件处理函数,执行它们
1815
1863
  if (list && list.length > 0) {
@@ -1825,7 +1873,7 @@ Eventer.prototype._execChainItem = async function (key, params) {
1825
1873
  };
1826
1874
 
1827
1875
  Eventer.prototype._createChainContext = function (namespace, innerkey, key, params) {
1828
- const start_time = Date.now();
1876
+ let start_time = Date.now();
1829
1877
  return {
1830
1878
  namespace,
1831
1879
  event: innerkey,
@@ -1872,7 +1920,7 @@ Eventer.prototype._execChainHandler = async function (obj, ctx, results) {
1872
1920
  ctx.executed++;
1873
1921
 
1874
1922
  // 执行事件处理函数
1875
- const result = await obj.func.apply(obj, ctx.params);
1923
+ let result = await obj.func.apply(obj, ctx.params);
1876
1924
  results.push(result);
1877
1925
  ctx.results.push(result);
1878
1926
 
@@ -1914,7 +1962,7 @@ Eventer.prototype._handleChainError = function (e, obj, ctx, results) {
1914
1962
  * @returns {Promise<object>} 返回包含results和cancel方法的对象
1915
1963
  */
1916
1964
  Eventer.prototype.runParallel = async function (key, ...params) {
1917
- const result = await this._execute(key, {
1965
+ let result = await this._execute(key, {
1918
1966
  exec_mode: 'parallel',
1919
1967
  options: params.options
1920
1968
  }, ...params);
@@ -1934,7 +1982,7 @@ Eventer.prototype.runParallel = async function (key, ...params) {
1934
1982
  */
1935
1983
  Eventer.prototype.emitParallel = function (key, ...params) {
1936
1984
  // 内部调用 _execute 方法,但不等待结果
1937
- const result = this._execute(key, {
1985
+ let result = this._execute(key, {
1938
1986
  exec_mode: 'parallel',
1939
1987
  options: params.options
1940
1988
  }, ...params);
@@ -1953,7 +2001,7 @@ Eventer.prototype.emitParallel = function (key, ...params) {
1953
2001
  * @param {number} max_listeners 最大监听器数量
1954
2002
  * @returns {Eventer} 返回当前实例,支持链式调用
1955
2003
  */
1956
- Eventer.prototype.setMaxListeners = function (max_listeners) {
2004
+ Eventer.prototype.setMaxListeners = function (max_list) {
1957
2005
  if (typeof max_listeners !== 'number' || max_listeners < 0) {
1958
2006
  throw new Error('最大监听器数量必须是一个非负数');
1959
2007
  }
@@ -1971,7 +2019,7 @@ Eventer.prototype.onMany = function (events_map) {
1971
2019
  throw new Error('事件对象必须是一个非空对象');
1972
2020
  }
1973
2021
 
1974
- for (const event_name in events_map) {
2022
+ for (let event_name in events_map) {
1975
2023
  if (events_map.has_own_property(event_name)) {
1976
2024
  this.on(event_name, events_map[event_name]);
1977
2025
  }
@@ -1988,11 +2036,11 @@ Eventer.prototype.onMany = function (events_map) {
1988
2036
  * @private
1989
2037
  */
1990
2038
  Eventer.prototype._parseKey = function (key) {
1991
- const parts = key.split(':');
2039
+ let parts = key.split(':');
1992
2040
  if (parts.length === 1) {
1993
2041
  // 没有命名空间,使用默认命名空间
1994
2042
  return {
1995
- namespace: this.config.default_namespace,
2043
+ namespace: this.config.default_name,
1996
2044
  key: key
1997
2045
  };
1998
2046
  } else if (parts.length === 2) {
@@ -2155,14 +2203,14 @@ Eventer.prototype._throttle = function (func, limit) {
2155
2203
  let last_func;
2156
2204
  let last_time = 0;
2157
2205
  return function () {
2158
- const ctx = this;
2159
- const args = arguments;
2206
+ let ctx = this;
2207
+ let args = arguments;
2160
2208
  if (!last_time) {
2161
2209
  func.apply(ctx, args);
2162
2210
  last_time = Date.now();
2163
2211
  } else {
2164
2212
  clearTimeout(last_func);
2165
- last_func = setTimeout(function () {
2213
+ last_func = setTimeout(() => {
2166
2214
  if ((Date.now() - last_time) >= limit) {
2167
2215
  func.apply(ctx, args);
2168
2216
  last_time = Date.now();
@@ -2182,10 +2230,10 @@ Eventer.prototype._throttle = function (func, limit) {
2182
2230
  Eventer.prototype._debounce = function (func, wait) {
2183
2231
  let timeout;
2184
2232
  return function () {
2185
- const ctx = this;
2186
- const args = arguments;
2233
+ let ctx = this;
2234
+ let args = arguments;
2187
2235
  clearTimeout(timeout);
2188
- timeout = setTimeout(function () {
2236
+ timeout = setTimeout(() => {
2189
2237
  func.apply(ctx, args);
2190
2238
  }, wait);
2191
2239
  };
@@ -2208,10 +2256,10 @@ Eventer.prototype.pause = function (key = '') {
2208
2256
  }
2209
2257
 
2210
2258
  // 解析关键字
2211
- const parsed = this._parseKey(key);
2212
- const namespace = parsed.namespace;
2213
- const event_key = parsed.key;
2214
- const full_key = `${namespace}:${event_key}`;
2259
+ let parsed = this._parseKey(key);
2260
+ let namespace = parsed.namespace;
2261
+ let event_key = parsed.key;
2262
+ let full_key = `${namespace}:${event_key}`;
2215
2263
 
2216
2264
  if (key) {
2217
2265
  return this._pauseEvent(full_key);
@@ -2266,10 +2314,10 @@ Eventer.prototype.resume = function (key = '') {
2266
2314
  }
2267
2315
 
2268
2316
  // 解析关键字
2269
- const parsed = this._parseKey(key);
2270
- const namespace = parsed.namespace;
2271
- const event_key = parsed.key;
2272
- const full_key = `${namespace}:${event_key}`;
2317
+ let parsed = this._parseKey(key);
2318
+ let namespace = parsed.namespace;
2319
+ let event_key = parsed.key;
2320
+ let full_key = `${namespace}:${event_key}`;
2273
2321
 
2274
2322
  if (key) {
2275
2323
  return this._resumeEvent(full_key);
@@ -2324,10 +2372,10 @@ Eventer.prototype.isPaused = function (key) {
2324
2372
  }
2325
2373
 
2326
2374
  // 解析关键字
2327
- const parsed = this._parseKey(key);
2328
- const namespace = parsed.namespace;
2329
- const event_key = parsed.key;
2330
- const full_key = `${namespace}:${event_key}`;
2375
+ let parsed = this._parseKey(key);
2376
+ let namespace = parsed.namespace;
2377
+ let event_key = parsed.key;
2378
+ let full_key = `${namespace}:${event_key}`;
2331
2379
 
2332
2380
  // 命名空间暂停检查
2333
2381
  if (this._paused_namespace.has(namespace)) {
@@ -2350,7 +2398,7 @@ Eventer.prototype.getPausedStatus = function () {
2350
2398
  return {
2351
2399
  global_paused: this._paused_global,
2352
2400
  paused_events: Array.from(this._paused),
2353
- paused_namespaces: Array.from(this._paused_namespace)
2401
+ paused_namespaces: Array.from(this._paused_namespace), // eslint-disable-line mm_eslint/variable-name
2354
2402
  };
2355
2403
  };
2356
2404