什么时候使用一次事件监听器?

时间:2014-05-13 20:56:16

标签: javascript jquery events backbone.js

在jQuery和backbonejs等javascript库中,你有机会使用一次性事件监听器,如jQuerys .one()或backbonejs的listenToOnce,它们只能监听一次事件,然后监听器已移除。我的问题是;何时使用thease听众以及为什么要使用它们?这个有什么好处?

5 个答案:

答案 0 :(得分:2)

一个用例是,如果您想要阻止(ajax)请求/事件由于双击按钮等而并行发出。在这种情况下,您可以使用one委托并在操作时重新附加它完成。

答案 1 :(得分:1)

这不是关于重复听众的好处,而是关于实现您的应用所需的行为。例如,如果您希望某些内容可以点击,则可以使用.one()。如果您希望多次点击某些内容,则可以使用.click()。没有固有的优势,如果您想要对元素/界面等做什么,那么它只是一个选择。

答案 2 :(得分:0)

例如:当用户滚动到文档的指定点时,如果您希望横幅只出现一次(不打扰用户体验)。但我认为可能会有更多的例子。

答案 3 :(得分:0)

最常见的情况(对我来说)就是当我运行一个动作时,我希望在它完成时得到通知。通常你会使用回调来做到这一点。但有时你正在使用的API没有回调,你必须听事件。由于我只关心下一个事件,我使用“一次听”机制。

例如,在Ext-JS中,每次存储加载数据时都会触发load事件,但我通常只需知道第一次加载。如果我是那个打电话的人,我可以在store.load()方法调用上设置一个回调。如果我不是,我可以设置事件并等到商店加载(这是第一次)。

答案 4 :(得分:0)

在读完其他人的答案之后,我设法将一些字符串拉到一起,然后想出了答案:

使用一次性事件监视器确实有一些好处。前面已经提到了一些要点,但不是全部。

首先,我个人认为代码“模仿”UI行为是一种很好的做法。在这种情况下,如果您的UI有一个按钮,比如保存一些内容然后退出,则UI后面的代码只运行一次(在最佳情况下),因此如果一个事件只被听一次,它会使代码更直观好。

此行为还使代码不易出错和不需要的行为。这些听众保证,当他们真的不需要时,没有听众被遗忘在后台听取事件上,或者,当听到不需要的东西时,例如可能导致错误或数据丢失。如果用户意外地执行了某些操作,也可以使用一次性监听器来防止不需要的并行进程,即单击一次按钮两次而不是一次。

由于听力事件占用了一些资源,因此可能会有一些轻微的性能提升。