디바운스 debounce의 개념
특정 환경에선 디바운스라는것이 필요합니다 ex) autocomplete
검색등을 할때 한글자치면 자동으로 검색툴팁이 내려오는것을 본적이 있으실텐데
잘못만들면 무엇을 검색할때 자음단위로 검색하게 됩니다.
안녕하세요 -> ㅇㅏㄴㄴㅕㅇㅎㅏㅅㅔㅇㅛ -> 12번의 호출을 하게되겠죠. 그럴경우
특정 시간내의 재호출되는걸 막는것을 디바운스라고 합니다.
같은 개념으로 키보드에서도 디바운싱이라는 개념이 같은 원리 입니다.
아래는 autocomplete 디바운싱에 샘플코드 입니다.
$("#barcode").autocomplete({
source: [],
select: function(event, ui) {
setTimeout(() => {
$('#barcode').val(ui.item.value);
}, 50);
},
change: function(event, ui) {
return false;
},
focus: function(event, ui) {
return false;
},
create: function() {
// Autocomplete가 생성될 때의 처리
$(this).data('ui-autocomplete')._renderItem = function(ul, item) {
return $("<li>")
.append('<div><img class="material-img" src="' + item.img + '" /><span>' + item.label + '</span></div>')
.appendTo(ul);
};
}
}).on("keyup", debounce(function(event) {
var name = event.target.value;
var codes = [13, 27, 37, 38, 39, 40];
if (codes.indexOf(event.keyCode) > -1) {
return;
}
$.ajax({
type: 'post',
async: false,
dataType: "json",
data: {
'mode': 'itemSearch',
'name': name
},
success: function(data) {
$("#barcode").autocomplete("option", "source", data).autocomplete("search");
}
});
}, 500));
function debounce(func, delay) {
let timer;
return function() {
clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, arguments);
}, delay);
};
}
댓글 1개
감사합니다.
게시판 목록
개발자팁
질문은 QA에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5276 | 2년 전 | 1335 | |||
| 5275 | 2년 전 | 1403 | |||
| 5274 | 기타 | 2년 전 | 820 | ||
| 5273 | JavaScript |
swallow
|
2년 전 | 1051 | |
| 5272 | node.js |
swallow
|
2년 전 | 748 | |
| 5271 | JavaScript |
swallow
|
2년 전 | 1498 | |
| 5270 | PHP |
swallow
|
2년 전 | 847 | |
| 5269 | node.js |
swallow
|
2년 전 | 683 | |
| 5268 | node.js |
swallow
|
2년 전 | 1215 | |
| 5267 | PHP |
swallow
|
2년 전 | 1596 | |
| 5266 | MySQL |
swallow
|
2년 전 | 1094 | |
| 5265 | PHP |
swallow
|
2년 전 | 2034 | |
| 5264 | JavaScript |
swallow
|
2년 전 | 861 | |
| 5263 | 기타 |
swallow
|
2년 전 | 2984 | |
| 5262 | 기타 |
swallow
|
2년 전 | 669 | |
| 5261 | node.js |
swallow
|
2년 전 | 1065 | |
| 5260 | JavaScript |
swallow
|
2년 전 | 1512 | |
| 5259 | node.js |
swallow
|
2년 전 | 735 | |
| 5258 | node.js |
swallow
|
2년 전 | 1748 | |
| 5257 | node.js |
swallow
|
2년 전 | 1299 | |
| 5256 | PHP |
swallow
|
2년 전 | 1940 | |
| 5255 | node.js |
swallow
|
2년 전 | 689 | |
| 5254 | PHP |
swallow
|
2년 전 | 3014 | |
| 5253 | node.js |
swallow
|
2년 전 | 679 | |
| 5252 | 정규표현식 |
swallow
|
2년 전 | 625 | |
| 5251 | node.js |
swallow
|
2년 전 | 881 | |
| 5250 | PHP |
swallow
|
2년 전 | 1115 | |
| 5249 | node.js |
swallow
|
2년 전 | 1064 | |
| 5248 | PHP |
swallow
|
2년 전 | 1411 | |
| 5247 | node.js |
swallow
|
2년 전 | 1018 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기