1

我正在以与 AS3 类似的方式为项目实现观察者模式,即使用 IEventDispatcher 接口。原因是因为我非常喜欢它。我知道它受到了一些批评,但我喜欢它。

但是我有点完美主义者,所以如果可能的话,我想把它瘦下来。IEventDispatcher 接口具有方法 hasEventListener 和 willTrigger ,我真的不明白这些方法有什么用处。我理解,正如文档所说,它们用于检查是否有为特定事件注册的任何侦听器。但是......什么时候会真正想要检查呢?有没有人有这些方法必不可少的用例?

4

1 回答 1

2

我相信在内部有一些对 dispatchEvent 的调用,它们会在调度事件之前首先检查是否存在任何侦听器。我记得这是一个问题,如果某些侦听器未注册,则其他代码不会执行,尽管我现在不记得确切的情况。

解决这个问题的一个好方法是对 Flex 源进行 grep 并查看它们是如何在那里使用的。

编辑 刚刚在 Flex 源 4.9.1 上为 hasEventListener 做了一个 grep,它出现在 151 个文件中。很多地方似乎只是在调度事件之前检查是否为某种事件类型注册了任何事件侦听器(以避免不必要的事件创建和我猜的调度调用)。在搜索 willTrigger 时,我发现它用于类似情况。

于 2013-05-31T01:38:24.080 回答