【发布时间】:2020-12-13 02:47:20
【问题描述】:
我无法绕过包装 eventEmitter2 库的 .on 方法来传递我的自定义变量。
-
尝试#1
let qHandler = new EventEmitter2({ wildcard: true }); const qHandlerWrapper = (queueName)=>{ qHandler.on = (eventName,callbackFunc)=>{ return qHandler.on(`${queueName}.${eventName}`,callbackFunc) } return qHandler }这里的代码进入无限递归调用。
-
尝试 #2 - 克隆
qHandler对象let qHandler = new EventEmitter2({ wildcard: true }); const qHandlerOnMain = require('lodash/clonedeep')(qHandler) const qHandlerWrapper = (queueName)=>{ qHandler.on = (eventName,callbackFunc)=>{ return qHandlerOnMain.on(`${queueName}.${eventName}`,callbackFunc) } return qHandler }- 这稍微解决了我的问题,但无法使用qHandler的其他方法,例如
onAny。
原因: 我已经在
qHandlerOnMain对象下注册了所有事件并返回另一个 -qHandler, 这会导致qHandler.onAny不找到在qHandler下注册的任何事件。 - 这稍微解决了我的问题,但无法使用qHandler的其他方法,例如
【问题讨论】:
标签: javascript dom-events javascript-objects eventemitter