💻 1. 웹개발_Front end/1-7 Ajax
[Ajax] 13. Ajax Callback 지옥
달님🌙
2021. 10. 6. 15:41
반응형
1. 이론
- ajax 여러 개를 순서에 맞게 호출하려면 success 콜백에서 다음 ajax를 호출
$.get("/contact/list_long.do", { pageno : 1 }, function(data) {
console.log("page1 success : " + (new Date()).toLocaleTimeString());
console.log(data);
console.log("Send Page2");
//두 번째 ajax 호출
$.get("/contact/list_long.do", { pageno : 2 }, function(data) {
console.log("page2 success : " + (new Date()).toLocaleTimeString());
console.log(data);
console.log("Send Page3");
//세 번째 ajax 호출
$.get("Contact/list_long.do", { pageno : 3 }, function(data) {
console.log("page3 success : " + (new Date()).toLocaleTimeString());
console.log(data);
});
});
});
- ajax를 중첩해서 사용하면 소스코드가 복잡해져서 가독성이 떨어지고 예외처리까지 추가될 경우에는 디버깅 또한 어려워짐
- 이러한 현상을 콜백 지옥이라고 합니다.
2. 실습
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="js/jquery-3.6.0.min.js"></script>
<title>Ajax 사용 - GET방식</title>
</head>
<body>
<button type="button" onclick="reqList();">조회</button>
<button type="button" onclick="delList();">삭제</button>
<p id="resp"></p>
<Script>
function reqList() {
//아래처럼 순서를 동기화하여 ajax를 호출하려면 콜백 함수 안에서
//다음 ajax를 계속 호출해야되는데 소스코드의 가독성이 떨어지고 분석하기 힘들어진다
//이러한 경우를 콜백 지옥이라고 부름
console.log("Send Page1");
//첫 번째 ajax 호출
$.get("/contact/list_long.do", { pageno : 1 }, function(data) {
console.log("page1 success : " + (new Date()).toLocaleTimeString());
console.log(data);
console.log("Send Page2");
//두 번째 ajax 호출
$.get("/contact/list_long.do", { pageno : 2 }, function(data) {
console.log("page2 success : " + (new Date()).toLocaleTimeString());
console.log(data);
console.log("Send Page3");
//세 번째 ajax 호출
$.get("Contact/list_long.do", { pageno : 3 }, function(data) {
console.log("page3 success : " + (new Date()).toLocaleTimeString());
console.log(data);
});
});
});
}
function delList() {
//p요소 초기화
$("#resp").html("");
}
</Script>
</body>
</html>
반응형