diff --git a/lib/plugins/handler.js b/lib/plugins/handler.js index 52ddb6a..a96ebad 100644 --- a/lib/plugins/handler.js +++ b/lib/plugins/handler.js @@ -1,9 +1,10 @@ +import util from 'node:util' import lodash from 'lodash' let events = {} let Handler = { add (cfg) { - let { ns, fn, property = 50 } = cfg + let { ns, fn, self, property = 50 } = cfg let key = cfg.key || cfg.event if (!key || !fn) { return @@ -15,6 +16,7 @@ let Handler = { property, fn, ns, + self, key }) events[key] = lodash.orderBy(events[key], ['priority'], ['asc']) @@ -38,7 +40,8 @@ let Handler = { } }, async callAll (key, e, args) { - return await Handler.callAll(key, e, args, true) + // 暂时屏蔽调用 + // return Handler.call(key, e, args, true) }, async call (key, e, args, allHandler = false) { let ret @@ -51,9 +54,9 @@ let Handler = { } done = false } - ret = fn(e, args, reject) - if (ret) { - await ret + ret = fn.call(obj.self, e, args, reject) + if (util.types.isPromise(ret)) { + ret = await ret } if (done && !allHandler) { logger.mark(`[Handler][Done]: [${obj.ns}][${key}]`) diff --git a/lib/plugins/loader.js b/lib/plugins/loader.js index 2c27e1d..9d5448f 100644 --- a/lib/plugins/loader.js +++ b/lib/plugins/loader.js @@ -82,6 +82,7 @@ class PluginsLoader { Handler.add({ ns: plugin.namespace || File.name, key: key, + self: plugin, property: priority || plugin.priority || 500, fn: plugin[fn] }) @@ -795,6 +796,7 @@ class PluginsLoader { Handler.add({ ns: plugin.namespace || File.name, key: key, + self: plugin, property: priority || plugin.priority || 500, fn: plugin[fn] })