2018년 11월 6일 화요일

javascript에서 발생한 allocation size overflow 오류 상황과 해결

리스트 기능을 구현하던 중 allocation size overflow 오류가 발생하였다.
문제의 코드는 아래와 같다.

이 함수는 목록을 요청한 경우 호출되는 함수이며 printForm 변수 선언부가 문제가 되었다.
이 변수에 할당되는 값은 특정 요소내의 HTML 코드를 읽어온 것인데 잦은 요청이 발생하며 이부분을 함수 외부에 선언하여 문제를 해결할 수 있었다.

function ptselectImageList() {
    ...생략...
    var promise = ptselectContentsList(); //콘텐츠 목록 가져오기
    promise.done(function(result){
        var length = $('.section-photos-sub .flex-container li').length;
        $('.section-photos-sub .flex-container li:lt('+(length-1)+')').remove();
       
        if (result.dataList != null) {
            var printForm = $('.section-photos-sub .flex-container').last().html();
            $.each(result.dataList, function(idx, data) {
                $('.section-photos-sub .flex-container').prepend(printForm); //목록 추가처리
                $('.section-photos-sub .flex-container li:first').removeClass('hidden');
                $('.section-photos-sub .flex-container li:first').attr('data-seq',data.seq);
                $('.section-photos-sub .flex-container li:first .title a').text(data.title);
            });
        }
    });
}