2013. 12. 19. 11:03
동기 비동기 차이  (Synchronous, asynchronous 차이)

상대방의 일정 신호에 의해서 다음 동작이 이루어 지면 동기식
상대방의 상태와 관계없이 일방적으로 동작하면 비동기식


아래와 같은 함수가 있다면 getList() 메소드가 끝나면 list(Print)를 실행해야 되므로 동기식으로 되어야 한다.
getList();
listPrint();


ajax 에서 

1234567891011121314151617
// 전화번호를 검색하여 받아온다.
var telNo = '';
$.ajax({
url : '',
data : {},
type : 'post',
sendDataType : 'json',
success : function(data) {
telNo = data;
}
});
 
// 전화번호를 넣어준다.
$('#telNo').val(telNo);
 
// 정상적으로 전화번호를 넣어주지 못한다.
// success function에 console.log(data)를 찍어보면 잘나온다.

비동기로 처리 되기 때문에 흐름상으로 보면 ajax가 처리되고 난다음 telNo를 넣어줄꺼라

생각되지만, 실제 처리 되는 순서를 보면 ajax를 호출을 하고 data를 받지 못한상태에서

telNo에 값을 넣어주게 된다.

이는 ajax의 async option default값이 true로 되어 있기 때문이다.

그래서 ajax async option을 false로 주어야지만 정상적인 처리가 된다.

123456789101112131415
// 전화번호를 검색하여 받아온다.
var telNo = '';
$.ajax({
url : '',
data : {},
type : 'post',
sendDataType : 'json',
async : false,
success : function(data) {
telNo = data;
}
});
// 전화번호를 넣어준다.
$('#telNo').val(telNo);



Posted by hoonihoon

댓글을 달아 주세요