Javascript 主干delegateevents延迟所有事件-包装超时
我正在使用主干网,我想知道是否有一种方法可以全局延迟从视图触发的任何函数调用?可能通过在超时时间内包装它Javascript 主干delegateevents延迟所有事件-包装超时,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我正在使用主干网,我想知道是否有一种方法可以全局延迟从视图触发的任何函数调用?可能通过在超时时间内包装它 // this is the delegate events function: delegateEvents: function(events) { if (!(events || (events = _.result(this, 'events')))) return this; this.undelegateEvents(); for (var key in e
// this is the delegate events function:
delegateEvents: function(events) {
if (!(events || (events = _.result(this, 'events')))) return this;
this.undelegateEvents();
for (var key in events) {
var method = events[key];
if (!_.isFunction(method)) method = this[events[key]];
if (!method) throw new Error('Method "' + events[key] + '" does not exist');
var match = key.match(delegateEventSplitter);
var eventName = match[1], selector = match[2];
// wrap method in a timeout
var binding = function(){
setTimeout(function(){
console.log('fired in timeout');
method();
}, 1000);
};
binding = _.bind(binding, this);
eventName += '.delegateEvents' + this.cid;
if (selector === '') {
this.$el.on(eventName, binding);
} else {
this.$el.on(eventName, selector, binding);
}
}
return this;
}
这里的问题是事件仍然正常触发,而不是超时触发。如何在超时时间内包装所有事件?(无论如何,我只关心可委托事件,如“单击”)您是否尝试过使用u.debounce?如果您希望回调在500毫秒后触发,您可以只分配method=u.debounce(method,500),然后您将得到一个在500毫秒后触发的method版本。我还没有尝试过。那么,如果只是用dispute替换u.bind,就这样?好吧,如果您想延迟的是method(),那么您可以执行以下操作:method=u.debounce(method,“delay”)。我仍然不明白为什么要使用u.bind(binding,this),因为您在绑定中没有引用它。您是否尝试过使用u.debounce?如果您希望回调在500毫秒后触发,您可以只分配method=u.debounce(method,500),然后您将得到一个在500毫秒后触发的method版本。我还没有尝试过。那么,如果只是用dispute替换u.bind,就这样?好吧,如果您想延迟的是method(),那么您可以执行以下操作:method=u.debounce(method,“delay”)。我仍然不明白为什么要使用u.bind(binding,this),因为在绑定中没有引用它。