你能在EventEmitter的emit方法上使用`.apply()`吗?

时间:2013-09-19 20:46:21

标签: javascript node.js eventemitter

我正在努力......

EventEmitter = require('events').EventEmitter

events = new EventEmitter()

events.emit.apply(null, ['eventname', 'arg1', 'arg2', 'arg3'])

...但它似乎不起作用或抛出错误,任何帮助?

2 个答案:

答案 0 :(得分:1)

在Apply方法上,您需要通知两个参数: 有效范围(方法中的“this”是什么值)和参数数组。

答案 1 :(得分:0)

我认为EventEmitter的emit()函数期望this是一个实际的EventEmitter对象。如果传入events对象,以下似乎可行。

events.emit.apply(events, ['eventname', 'arg1', 'arg2', 'arg3'])

虽然在这一点上,不妨只打电话

emit('eventname', 'arg1', 'arg2', 'arg3')

我猜测emit()方法正在循环注册事件的内部列表,以查看是否存在匹配的事件。不确定这是否有帮助,只是我今天遇到的事情与事件一起工作......