是否可以捕获从类构造函数发出的事件?问题是它在附加处理程序之前触发。CoffeeScript中的类代码:
class YtVideo extends events.EventEmitter
constructor: ->
events.EventEmitter.call this
# logic
@emit 'error', 'Invalid YouTube link.'
的例子:
ytVideo = new YtVideo
ytVideo.on 'error', (e) -> # This doesn't work for events from constructor.
alert e
简单的答案是,正如您所看到的,您无法在构造函数中同步触发'error'
,因为您还没有时间绑定错误事件处理程序。
考虑到这一点,你有两个选择:
1。抛出并捕获一个正常异常
throw 'Invalid YouTube link.'
和
try
ytVideo = new YtVideo
catch e
alert e
2。延迟错误事件,以便有时间绑定错误侦听器
process.nextTick =>
@emit 'error', 'Invalid YouTube link.'