从*class*构造函数发出的Catch事件



是否可以捕获从构造函数发出的事件?问题是它在附加处理程序之前触发。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.'

相关内容

  • 没有找到相关文章

最新更新