Closed popomore closed 11 years ago
场景?
某些 callback 只想执行一次
比如在 show 之后要插入一个 dom,这个操作做一次就行了。
.once('after:show', callback)
这应该是 callback 自己的事,跟 event 没关系。 event trigger 就是 trigger 了,是否执行或执行几次是 callback 的事。
从 api 看 trigger 也比较简单,和原来一致,原来 trigger 几次现在还是几次。但是有了 once 能让事情更简单。
同意 @hotoo. 没必要增加 event 的 once 啊, 避免重复调用 callback, 应该由 callback 来处理. 因为只有使用者才知道是否是重复还是一次.
有了 once 更简单的话, 可以直接用 http://underscorejs.org/#once 方法或类似的函数封装下 callback.
不觉得自己处理很麻烦么,还需要在外部指定一个状态。
once 也是事件注册,只是 on 的一个延伸。
命名是 underscore 的 once
还是 jquery 的 one
?
想要实现的是 once, 不是 jquery 的 one. 要实现 jq的one 直接用jq就好了啊.
On Mon, May 20, 2013 at 3:38 PM, afc163 notifications@github.com wrote:
是 underscore 的 once 还是 jquery 的 one?
— Reply to this email directly or view it on GitHubhttps://github.com/aralejs/events/issues/6#issuecomment-18135560 .
觉得麻烦就增加特定场景的支持,这个要慎重。基础类库是否应该帮助业务覆盖全面的场景?
我觉得基础类库只需要提供业务代码覆盖特定场景的能力即可。保持高内聚,做好自己应该做的事情就好了。
对于 once,我觉得合理的做法是:
evt.on("once", function(){
// 也可以考虑使用状态标识。
evt.off("once", arguments.callee);
// do something one time.
})
@afc163 是 backbone 的 once
是否需要增加这个 api