[英]Using Underscore's _.debounce() method
我正在嘗試使用_.debounce()
和它的_.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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.