디바운스 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에서 해주시기 바랍니다.
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|---|
| 5396 | 기타 |
슈퍼스타맨
|
4개월 전 | 353 | |
| 5395 | PHP |
untitled
|
5개월 전 | 822 | |
| 5394 | MySQL |
선택과집중
|
6개월 전 | 599 | |
| 5393 | 웹서버 |
techstar
|
8개월 전 | 864 | |
| 5392 |
|
1년 전 | 1219 | ||
| 5391 | 10개월 전 | 1120 | |||
| 5390 | 10개월 전 | 906 | |||
| 5389 | 9개월 전 | 874 | |||
| 5388 | 9개월 전 | 976 | |||
| 5387 | 8개월 전 | 808 | |||
| 5386 | JavaScript |
nekoieye
|
8개월 전 | 972 | |
| 5385 | 웹서버 | 8개월 전 | 989 | ||
| 5384 | JavaScript |
|
9개월 전 | 820 | |
| 5383 | 기타 | 10개월 전 | 1130 | ||
| 5382 | 기타 |
|
10개월 전 | 579 | |
| 5381 | JavaScript | 10개월 전 | 910 | ||
| 5380 | 기타 |
|
10개월 전 | 696 | |
| 5379 | JavaScript | 10개월 전 | 693 | ||
| 5378 | 11개월 전 | 1199 | |||
| 5377 | 기타 |
|
11개월 전 | 761 | |
| 5376 | jQuery |
|
11개월 전 | 576 | |
| 5375 | jQuery |
techstar
|
11개월 전 | 730 | |
| 5374 | 기타 |
|
11개월 전 | 782 | |
| 5373 | MySQL |
|
12개월 전 | 812 | |
| 5372 | 기타 |
|
12개월 전 | 1014 | |
| 5371 | JavaScript |
|
12개월 전 | 729 | |
| 5370 | JavaScript |
|
12개월 전 | 731 | |
| 5369 | PHP |
|
12개월 전 | 1243 | |
| 5368 | PHP | 1년 전 | 1408 | ||
| 5367 | 기타 |
nekoieye
|
1년 전 | 1284 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기