Javascript 使用下划线';s u.debounce()方法

Javascript 使用下划线';s u.debounce()方法,javascript,underscore.js,Javascript,Underscore.js,我正在尝试使用下划线js和它的\uu.debounce()方法来停止在keyup事件上重复触发的回调函数。我这样做是因为每次开始键入时,都会触发一个AJAX调用,因此为您键入的每个字符进行调用将非常昂贵(: 以下是我使用该方法的方式: onTypeEvents : function(selector, callback) { return $(selector).on('keyup', function(event){ var that = $(this

我正在尝试使用下划线js和它的
\uu.debounce()
方法来停止在keyup事件上重复触发的回调函数。我这样做是因为每次开始键入时,都会触发一个AJAX调用,因此为您键入的每个字符进行调用将非常昂贵(:

以下是我使用该方法的方式:

onTypeEvents : function(selector, callback) {
        return $(selector).on('keyup', function(event){

            var that = $(this).val().trim();

            switch(event.keyCode) {
                case 8:
                    if(that !== '') {
                        if(that.length >= 2) {
                            return _.debounce(function() { callback.apply(that, [ that ]) }, 150);
                        } else {
                            return _.debounce(function() { callback.apply(null, [ null ]) }, 150);
                        };
                    };
                    break;
                case 9:
                    break;
                case 13:
                    break;
                case 27:
                    break;
                case 37:
                    break;
                case 38:
                    break;
                case 39:
                    break;
                case 40:
                    break;
                default:
                    if(that !== '') {
                        if(that.length >= 2) {
                            return _.debounce(function() { callback.apply(that, [ that ]) }, 150);
                        } else {
                            return _.debounce(function() { callback.apply(null, [ null ]) }, 150);
                        };
                    };
                    break;
            };

            event.preventDefault();
            event.stopPropagation();
        });
    },

但是显然它不起作用了,因为再也没有什么东西在启动了,但是如果我删除这个方法,我的代码就可以正常工作了(:那么这里可能出了什么问题?我是做错了还是遗漏了什么?

这个想法是对keyup回调本身进行去抖动。这样,代码只对用户停止键入前键入的最后一个键做出反应。类似于:

$(selector).on('keyup', _.debounce(function (e) {
  switch (e.keyCode) {
    /* your code */
  }
}, 500));

如果您只想对特定的键代码进行去盎司,该怎么办?switch语句中的去盎司调用(如
.debounce(myFunction,100);
)似乎不起作用,
myFunction
永远不会被调用明白了吗: