반응형
Lodash Debounce는 비난하지 않는다.
Lodash를 사용하여 함수를 디버깅하려고 하는데 함수를 호출해도 전혀 디버깅이 되지 않는 것 같습니다.제 문제는 SO나 Google에서 본 것과 같은 실수가 아닌 것 같습니다(일반적으로 그들은 다음 함수를 호출하지 않습니다)._.debounce
반품).
제가 현재 사용하고 있는 슈퍼 심플한 실장은 다음과 같습니다(CoffeeScript를 사용한 Angular).
s.search = -> _.debounce( s._makeSearchRequest, 1000 )()
s._makeSearchRequest = -> console.log("making search request")
JS에서는, 다음과 같이 생각하고 있습니다.
s.search = function() { _.debounce( s._makeSearchRequest, 1000 )() }
s._makeSearchRequest = function() { console.log("making search request") }
나는 달린다s.search()
입력란에 입력함으로써 빠르게 횡설수설하면 콘솔은 키를 누를 때마다 검색 요청을 1초에 몇 번씩 출력합니다. 이는 전혀 삭제되지 않았음을 나타냅니다.
내가 뭘 잘못하고 있는지 알기나 해?
_.debounce
전달된 함수를 취소하는 함수를 만듭니다.무슨 일이야?s.search
하고 있는 함수는 호출입니다._.debounce
매번 처음부터 다시s.search
호출됩니다.매번 완전히 새로운 기능이 생성되므로 더 이상 불평할 필요가 없습니다.
따라서 해결책은 화살표와 추가 괄호를 제거하고s._makeSearchRequest
는, 액세스 하기 전에 정의됩니다.
s._makeSearchRequest = -> console.log("making search request")
s.search = _.debounce( s._makeSearchRequest, 1000 )
예(JavaScript 사용):
var s;
s = {};
s._makeSearchRequest = function(q) {
return console.log("making search request: " + q);
};
s.search = _.debounce(s._makeSearchRequest, 1000);
// call s.search three times in a row
s.search(1);
s.search(2);
s.search(3);
// call s.search after 500 ms
setTimeout(s.search, 500, 4);
// call s.search after 3 seconds
setTimeout(s.search, 3000, 5);
// timer to show passage of time
var i = 0;
var t = setInterval(function () {
i += 1;
console.log(i + " seconds elapsed");
if (i > 5) { clearInterval(t); }
}, 1000);
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.min.js"></script>
이것을 시험해 보세요.
s._makeSearchRequest = function() {
console.log("making search request");
}
s.search = _.debounce( s._makeSearchRequest, 1000 );
POC: http://jsfiddle.net/bvaughn/3saj6znk/
언급URL : https://stackoverflow.com/questions/29131561/lodash-debounce-not-debouncing
반응형
'source' 카테고리의 다른 글
Wordpress를 mysql 서버에 연결할 수 없습니다. (0) | 2023.02.14 |
---|---|
워드프레스 플러그인에서 컬을 사용하는 방법은 무엇입니까? (0) | 2023.02.14 |
AngularJS - 컨트롤러 내부에서 상태를 변경하는 방법 (0) | 2023.02.14 |
Jest에서 버튼 클릭 시뮬레이션 (0) | 2023.02.14 |
PHP에서 서버 시간대 가져오기 (0) | 2023.02.14 |