Próbuję użyć metody UnderscoreJS i metody _.debounce()
, aby zatrzymać funkcję wywołania zwrotnego w celu wielokrotnego uruchamiania w zdarzeniu kluczowania. Robię tak, ponieważ za każdym razem, gdy zaczynasz pisać, wywołanie AJAX zostanie uruchomione, więc wywołanie każdego wpisywanego znaku będzie kosztowne (:Używanie metody Podkreślnik _.debounce()
Oto jak używam tej metody:
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();
});
},
ale najwyraźniej to nie działa, ponieważ nic nie jest rozpalanie już, ale jeśli usunąć metodę mój kod działa dobrze (?: Więc co może być nie tak tam robię to źle, czy jestem Tęsknię za czymś?
co zrobić, jeśli chcesz zrezygnować tylko z określonego kodu klucza? Wywołanie debounce wewnątrz instrukcji switch (np. '_.debounce (myFunction, 100);) nie działa,' myFunction' nigdy nie jest nazywane – zok
ok dostałem to: https://stackoverflow.com/questions/24306290/lodash-debounce-not-working-in-anonymous-function – zok