简体   繁体   English

您可以在EventEmitter的emit方法上使用`.apply()`吗?

[英]Can you use `.apply()` on the emit method of EventEmitter?

I'm trying to do... 我正在努力做...

EventEmitter = require('events').EventEmitter

events = new EventEmitter()

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

...but it doesn't seem to work or throw an error, any help? ...但是它似乎不起作用或抛出错误,有帮助吗?

在Apply方法上,您需要通知两个参数:有效范围(该值在方法内部为“ this”)和参数数组。

I think the emit() function of the EventEmitter is expecting this to be an actual EventEmitter object. 我认为EventEmitter的emit()函数期望this是一个实际的EventEmitter对象。 The following seems to work if you pass in the events object. 如果传递events对象,则以下内容似乎起作用。

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

Though at this point, might as well just call 尽管此时,最好还是打电话给

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

I am guessing the emit() method is looping over an internal list of registered events to see if there is a matching one. 我猜emit()方法正在遍历注册事件的内部列表,以查看是否有匹配的事件。 Not sure if this helps, just something I came across today working with events... 不确定这是否有帮助,只是我今天在处理事件时遇到的问题...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM