我正在尝试使用 UnderscoreJS,它是_.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();
});
},
但显然它不起作用,因为没有任何东西再启动,但是如果我删除该方法,我的代码就可以正常工作(:那么那里可能出了什么问题?我做错了还是我错过了什么?