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),因为在绑定中没有引用它。