2013-07-23 29 views
1

我见过callback()概念在jQuery插件中使用了很多,我开始认为触发自定义事件可能是更好的选择。为什么在jQuery中使用回调函数来触发事件?

jQuery有一个触发内置机制('A_CUSTOM_EVENT'),为什么插件作者不直接触发'COMPLETE_EVENT'而不是坚持我们传递一个回调函数来处理这个'完整阶段'。

尼克

+2

为什么不尝试用两种方式构建插件并让我们知道哪一个更有效,更高效和更可靠? – DevlshOne

回答

5

这取决于你想要达到的目的 - 这是一个架构选择。

基本上,事件范式是开放的,非私人的和持久的。你有一个公众活动,每个人都可以注册,而且他们的活动功能基本上都是按照他们希望的频率调用,直到他们从活动中取消注册为止。对经常性事件有意义。

示例:注册到悬停事件。

回调范式是孤立的,私人的和一次性的。有人调用你的代码并交出一个私人回调,一旦它被执行,它就会被丢弃。在大多数情况下,可用性是有限的(限于单个时间点)和/或不一定是公开的。

示例:处理ajax响应。

这两种范例都有优点和缺点。使用一个或另一个取决于您,以及您希望如何使用您的应用程序。

+1

Ajax是一个很好的例子,因为基础机制使用事件订阅模型(onreadystatechange),但是由于ajax响应(事件)在概念上与它的请求耦合在一起,几乎每个人对ajax的第一个响应就是编写一个封装器来转换它进入回调范例。 – slebetman

相关问题