mm_expand 2.4.0 → 2.4.2
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 +29 -12
- package/package.json +1 -1
package/lib/eventer.js
CHANGED
|
@@ -628,7 +628,7 @@ Eventer.prototype._execSingleTask = async function (o, params, ctx, options) {
|
|
|
628
628
|
this._handleSuccessResult({ result, o, ctx, arr, task });
|
|
629
629
|
} catch (e) {
|
|
630
630
|
// 处理错误
|
|
631
|
-
this.
|
|
631
|
+
this._handleSeqTaskError(e, o, ctx, task);
|
|
632
632
|
}
|
|
633
633
|
};
|
|
634
634
|
|
|
@@ -640,8 +640,12 @@ Eventer.prototype._createTask = function (o, full_key) {
|
|
|
640
640
|
cancel: () => { cancelled = true; }
|
|
641
641
|
};
|
|
642
642
|
|
|
643
|
-
//
|
|
643
|
+
// 添加到进行中的任务列表(防御性处理重入调用导致 key 已被清理的情况)
|
|
644
644
|
let tasks = this._tasks.get(full_key);
|
|
645
|
+
if (!tasks) {
|
|
646
|
+
tasks = [];
|
|
647
|
+
this._tasks.set(full_key, tasks);
|
|
648
|
+
}
|
|
645
649
|
tasks.push(task);
|
|
646
650
|
|
|
647
651
|
return { task, tasks, cancelled };
|
|
@@ -667,7 +671,7 @@ Eventer.prototype._handleSuccessResult = function (config) {
|
|
|
667
671
|
task.tasks.splice(task.tasks.indexOf(task.task), 1);
|
|
668
672
|
};
|
|
669
673
|
|
|
670
|
-
Eventer.prototype.
|
|
674
|
+
Eventer.prototype._handleSeqTaskError = function (e, o, ctx, task) {
|
|
671
675
|
ctx.error_count++;
|
|
672
676
|
this.log('error', `事件执行失败 [${ctx.space}:${ctx.event}] - ${o.name}`, e);
|
|
673
677
|
|
|
@@ -780,6 +784,10 @@ Eventer.prototype._createWaterfallTask = function (obj, full_key) {
|
|
|
780
784
|
};
|
|
781
785
|
|
|
782
786
|
let tasks = this._tasks.get(full_key);
|
|
787
|
+
if (!tasks) {
|
|
788
|
+
tasks = [];
|
|
789
|
+
this._tasks.set(full_key, tasks);
|
|
790
|
+
}
|
|
783
791
|
tasks.push(task);
|
|
784
792
|
|
|
785
793
|
return { task, tasks, cancelled };
|
|
@@ -900,6 +908,10 @@ Eventer.prototype._createRaceTask = function (obj, full_key) {
|
|
|
900
908
|
};
|
|
901
909
|
|
|
902
910
|
let tasks = this._tasks.get(full_key);
|
|
911
|
+
if (!tasks) {
|
|
912
|
+
tasks = [];
|
|
913
|
+
this._tasks.set(full_key, tasks);
|
|
914
|
+
}
|
|
903
915
|
tasks.push(task);
|
|
904
916
|
|
|
905
917
|
return { task, tasks, cancelled };
|
|
@@ -969,8 +981,12 @@ Eventer.prototype._createParallelTask = function (obj, full_key) {
|
|
|
969
981
|
cancel: () => { cancelled = true; }
|
|
970
982
|
};
|
|
971
983
|
|
|
972
|
-
//
|
|
984
|
+
// 添加到进行中的任务列表(防御性处理重入调用导致 key 已被清理的情况)
|
|
973
985
|
let tasks = this._tasks.get(full_key);
|
|
986
|
+
if (!tasks) {
|
|
987
|
+
tasks = [];
|
|
988
|
+
this._tasks.set(full_key, tasks);
|
|
989
|
+
}
|
|
974
990
|
tasks.push(task);
|
|
975
991
|
|
|
976
992
|
return { task, tasks, cancelled };
|
|
@@ -1265,7 +1281,7 @@ Eventer.prototype._ensureNs = function (name) {
|
|
|
1265
1281
|
*/
|
|
1266
1282
|
Eventer.prototype._execNsEvents = async function (name, key, params) {
|
|
1267
1283
|
let list = this._dict[name][key];
|
|
1268
|
-
const
|
|
1284
|
+
const name_results = [];
|
|
1269
1285
|
const arr = []; // 存储需要移除的事件
|
|
1270
1286
|
|
|
1271
1287
|
// 执行事件处理函数
|
|
@@ -1274,7 +1290,7 @@ Eventer.prototype._execNsEvents = async function (name, key, params) {
|
|
|
1274
1290
|
let obj = list[i];
|
|
1275
1291
|
// 执行事件处理函数
|
|
1276
1292
|
let result = await obj.func.apply(obj, params);
|
|
1277
|
-
|
|
1293
|
+
name_results.push(result);
|
|
1278
1294
|
|
|
1279
1295
|
// 处理执行次数限制
|
|
1280
1296
|
if (obj.times >= 0) {
|
|
@@ -1286,7 +1302,7 @@ Eventer.prototype._execNsEvents = async function (name, key, params) {
|
|
|
1286
1302
|
} catch (e) {
|
|
1287
1303
|
// 记录错误但不中断执行
|
|
1288
1304
|
this.log('error', `事件执行失败 [${name}:${key}] - ${list[i].name}`, e);
|
|
1289
|
-
|
|
1305
|
+
name_results.push({
|
|
1290
1306
|
_error: true,
|
|
1291
1307
|
error: e,
|
|
1292
1308
|
handler: list[i].name
|
|
@@ -1687,7 +1703,7 @@ Eventer.prototype._addTargetEvents = function (full_from_event, to_events) {
|
|
|
1687
1703
|
let target_events = Array.isArray(to_events) ? to_events : [to_events];
|
|
1688
1704
|
|
|
1689
1705
|
for (let i = 0; i < target_events.length; i++) {
|
|
1690
|
-
this.
|
|
1706
|
+
this._addTargetEvent(full_from_event, target_events[i]);
|
|
1691
1707
|
}
|
|
1692
1708
|
};
|
|
1693
1709
|
|
|
@@ -1981,7 +1997,7 @@ Eventer.prototype.onMany = function (events_map) {
|
|
|
1981
1997
|
}
|
|
1982
1998
|
|
|
1983
1999
|
for (let event_name in events_map) {
|
|
1984
|
-
if (
|
|
2000
|
+
if (Object.prototype.hasOwnProperty.call(events_map, event_name)) {
|
|
1985
2001
|
this.on(event_name, events_map[event_name]);
|
|
1986
2002
|
}
|
|
1987
2003
|
}
|
|
@@ -2035,10 +2051,11 @@ Eventer.prototype._sort = function (events) {
|
|
|
2035
2051
|
* @private
|
|
2036
2052
|
*/
|
|
2037
2053
|
Eventer.prototype._runMiddleware = async function (type, ctx) {
|
|
2038
|
-
if (!this._middleware || this._middleware.length === 0) return;
|
|
2054
|
+
if (!this._middleware || !this._middleware[type] || this._middleware[type].length === 0) return;
|
|
2039
2055
|
|
|
2040
|
-
|
|
2041
|
-
|
|
2056
|
+
const mwList = this._middleware[type];
|
|
2057
|
+
for (let i = 0; i < mwList.length; i++) {
|
|
2058
|
+
await this._execMiddleware(mwList[i], type, ctx, i);
|
|
2042
2059
|
// 如果上下文被取消,则停止执行
|
|
2043
2060
|
if (ctx.cancelled) break;
|
|
2044
2061
|
}
|