6
我試圖使用UnderscoreJS和它的_.debounce()
方法來停止一個回調函數重複觸發keyup事件。我這樣做是因爲每次你開始輸入時,AJAX呼叫都會被激活,因此打電話給你輸入的每個字符都會非常昂貴(:使用下劃線的_.debounce()方法
這是我如何使用該方法:
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();
});
},
但很顯然,這是行不通的,因爲沒有什麼是生火了,但如果我的方法去掉我的代碼工作得很好(?:那麼有什麼可以去錯在那裏我是不是做錯了還是我我錯過了什麼?
如果您只想刪除特定的密鑰代碼,該怎麼辦? switch語句中的debounce調用(如'_.debounce(myFunction,100);')似乎不起作用,'myFunction'永遠不會調用 – zok
ok了:https://stackoverflow.com/questions/24306290/lodash反跳 - 不工作,在匿名函數 – zok