我正在尝试使用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,150);
- };
- };
- break;
- };
- event.preventDefault();
- event.stopPropagation();
- });
- },
但显然它不起作用,因为没有任何事情再次激发,但如果我删除方法我的代码工作得很好(那么那里可能会出现什么问题?我做错了还是我错过了什么?