Tôi đang cố gắng sử dụng UnderscoreJS và phương thức _.debounce()
để dừng chức năng gọi lại để kích hoạt lặp lại trên sự kiện khóa bàn phím. Tôi làm điều đó vì mỗi lần bạn bắt đầu nhập, cuộc gọi AJAX sẽ được kích hoạt để có thể thực hiện cuộc gọi cho mỗi ký tự bạn nhập (:Sử dụng phương thức _.debounce() của Underscore
Đây là cách tôi đang sử dụng phương pháp:
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();
});
},
Nhưng dường như nó không hoạt động vì không có gì kích hoạt nữa, nhưng nếu tôi xóa phương thức mã của tôi hoạt động tốt (: Điều gì có thể xảy ra trong đó? Tôi làm sai hoặc sáng
nếu bạn muốn chỉ xóa mã khóa cụ thể thì sao? Cuộc gọi debounce bên trong câu lệnh switch (như '_.debounce (myFunction, 100);') dường như không hoạt động, 'myFunction' không bao giờ được gọi là – zok
ok đã nhận nó: https://stackoverflow.com/questions/24306290/lodash-debounce-not-working-in-anonymous-function – zok