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