ajax는 다들 알다시피 기본적으로 비동기 방식으로 동작한다.
애초에 ajax는 Asynchronous Javascript And XML의 줄임말이다.
비동기로 작동하는 만큼, 해당 기능이 데이터를 처리하는 동안 또다른 동작을 수행할 수 있고,
불필요한 로딩을 줄이고 자유로운 페이지 구성도 가능하다.
하지만 간혹, ajax를 동기 방식으로 동작하게 해야할 때가 있다.
$.ajax({
type: 'POST',
url: 'notice/setting',
data: "temp=1234",
success: function(data) {
if(data != null) {
// Do somothing.
}
}
});
doAnything();
이러한 자바스크립트 코드가 있다면, doAnything() 함수는
위 ajax의 결과와는 상관 없이 무조건 실행하게 된다.
비동기 방식이므로 data의 처리는 doAnything() 입장에서는 처리하든 말든 상관이 없게 된다.
하지만 만약 doAnything()함수의 처리가 위 ajax콜의 영향을 받는다면 어떻게 될까?
당연히 제대로 된 결과를 못 받을 가능성이 크다.
클라이언트의 처리 속도가 서버 쪽 처리보다 느리다면 달라지겠지만...
이런 경우를 방지하기 위해 ajax의 비동기 방식을 설정할 수 있다.
$.ajax({
type: 'POST',
url: 'notice/setting',
data: "temp=1234",
async : false,
success: function(data) {
if(data != null) {
// Do somothing.
}
}
});
doAnything();
async는 기본적으로 true로 가지만 위와 같이 따로 설정을 해준다면 동기 방식으로 작동한다.
반응형
'IT 공부 > 옛날 공부 내용들' 카테고리의 다른 글
Factory Method 패턴 (0) | 2020.04.01 |
---|---|
타이밍 어택 (보안) (0) | 2020.03.23 |
Same Origin Policy (동일 출처 정책) (0) | 2020.03.19 |
Request 헤더에 너무 많은 데이터를 넣었을 때 (0) | 2020.03.09 |
댓글