안녕하세요. 초보 개발자입니다.
목표: 정보조회 사이트에서 조회 버튼을 누르면 로딩바(gif)이 뜨고 사이트에 정보를 뜨면 로딩바가 사라진다.
※ 로딩바가 사라지는 함수는 page.dataTable.init(); 안에 있습니다.
※ page.dataTable.init();은 ajax 통신으로 datable을 만들어 화면에 뿌려준다.
※ page.dataTable.init()이 실행이 되고 화면단에 출력되기까지 5초정도의 시간이 있다.
1번 사항
#(‘btnSearch’).on(‘click’,function(){ // 조회버튼 클릭시 발생되는 이벤트들
var strDate=$(’#startDate’).val(); // 검색시 시작날짜
var endDate=$(’#endDate’).val(); // 검색시 끝나는 날짜
a.showLodingbar(); // 로딩바를 띄워주는 함수
page.dataTable.init(); // 페이지에 정보를 주는 함수
}
2번 사항
#(‘btnSearch’).on(‘click’,function(){ // 조회버튼 클릭시 발생되는 이벤트들
var strDate=$(’#startDate’).val(); // 검색시 시작날짜
var endDate=$(’#endDate’).val(); // 검색시 끝나는 날짜
a.showLodingbar(); // 로딩바를 띄워주는 함수
setTimeout(function() { page.dataTable.init() },200); // 페이지에 정보를 주는 함수
}
1번 사항으로 했을 경우 로딩바가 바로 뜨지 않고 page.dataTable.init()이 실행되고 datatatable에 ajax통신이 시작될때 뜨고 ajax 통신이 종료가 되면 같이 사라집니다. (약 1초정도 로딩바가 실행이 됩니다.)
2번 사항으로 할경우 조회버튼을 누르고 바로 로딩바가 나오며 화면단에 데이터가 나올때 없어집니다.
(약 5초)
궁금한점
- 버튼 클릭 후 순차적으로 실행이 되는데 왜 로딩바가 안뜨는 이유가 궁금합니다…
- 자바스크립트가 비동기적 스레드라서라는 말이 있는데. 그럴 경우 page.dataTable.init() 이 실행 되고 나서 var startDate, var endDate에 값이 담기는 경우도 생길 수가 있지 않나요?
- page.dataTable.init()을 하면 컨트롤러로 가고 서비스로 가서 select문을 날리는데 왜 이때는 로딩바가 뜨지 않는걸까요…