킹콩랩스

디바운스 debounce의 개념

· 2024-12-13 (금) 09:28:59 · 1988 · 1

특정 환경에선 디바운스라는것이 필요합니다 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개

감사합니다.

댓글을 작성하시려면 로그인이 필요합니다.

개발자팁

5,403건

개발과 관련된 유용한 정보를 공유하세요. 질문은 QA에서 해주시기 바랍니다.

+
분류 제목 글쓴이 날짜 조회
MySQL 24-12-14 조회 1,772
기타 24-12-14 조회 1,937
JavaScript 24-12-13 조회 1,989
JavaScript 24-12-13 조회 1,577
PHP 24-12-13 조회 2,041
PHP 24-11-26 조회 2,266
기타 24-11-14 조회 2,396
기타 24-10-30 조회 2,310
PHP 24-10-11 조회 2,071
JavaScript 24-10-10 조회 1,247
JavaScript 24-09-26 조회 1,784
24-09-25 조회 2,273
JavaScript 24-09-07 조회 2,032
24-09-11 조회 1,486
24-09-19 조회 2,429
24-09-10 조회 1,867
24-08-19 조회 1,591
24-10-03 조회 1,649
24-08-07 조회 1,220
24-07-23 조회 1,913
24-07-08 조회 1,504
24-06-27 조회 1,407
PHP 24-08-23 조회 1,600
PHP 24-07-31 조회 1,344
OS 24-07-22 조회 1,750
기타 24-07-22 조회 1,186
기타 24-07-12 조회 1,401
기타 24-07-02 조회 1,536
기타 24-07-02 조회 1,082
JavaScript 24-06-30 조회 1,203