man*_*nta 6 javascript dom-events
我发现了以下关于 JavaScript 中自定义事件处理的帖子。从这些文章中,(至少)有两种处理/触发自定义事件的方法:
但是处理(触发和订阅)自定义事件的推荐方法是什么?
[编辑]这个问题的上下文不使用任何库,如 jQuery、YUI...,而只是简单的 JavaScript
[编辑2]似乎存在细微的差异,至少在错误处理方面是这样。Dean Edwards ( http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/ ) 建议采用前一种方式进行自定义事件处理。我们可以说这是有区别的吗?
你所描述的是之间的区别
前者是一种使用事件进行消息传递的方式。一个例子是创建一个EventEmitter
后者只是手动使用浏览器内置的 DOM 事件系统的一种方法。这基本上是使用原生存在于(有能力的/现代)浏览器中的DOM 3 Event API 。
所以问题只是你想做什么?触发 DOM 事件还是使用事件进行消息传递?
DOM 似乎有巨大的开销。这样做是因为它支持事件传播和冒泡。这样做是因为它支持将事件绑定到 DOMElement。
如果您不需要 DOM3 事件的任何功能,那么请使用所选的发布/订阅库。
[编辑2]
这就是关于错误处理的全部内容,如何进行错误处理取决于您。如果您知道您的事件发射器是同步的,那么这就是预期的行为。要么进行自己的错误处理,要么使用setTimeout它使其异步。
请注意,如果您将其设为异步,您将“失去”事件处理程序在发出/触发/调度调用返回后完成其逻辑的保证。这需要完全不同的高级设计,然后假设事件发射器是同步的。这不是一个轻易做出的选择
| 归档时间: |
|
| 查看次数: |
2114 次 |
| 最近记录: |