jQuery에는 버전 1.5 이후로 Deffered이라는 객체를 사용하여 콜백 및 비동기 호출의 관리를 처리하는 유틸리티가 있습니다. 이러한 유형의 객체를 사용하면 클라이언트가 일부 배경 작업이 완료 될 때 콜백을 추가하는 것이 더 쉽습니다.
function some_func_validate(some_id) {
var deferred = $.Deferred(),
context = {
id: some_id,
success: false
};
$.ajax({
type: 'GET',
url: '/something/'+some_id+'/check'
})
.done(function(response){
context.success = true;
context.content = response;
deferred.resolveWith(context);
})
.fail(function() {
deferred.rejectWith(context)
});
return deferred.promise();
}
사용 예제 :
some_func_validate(5).then (
function (context) {
// Handle successful validation.
console.log(context);
},
function (context) {
// Handle failed validation.
console.log(context)
}
);
또 다른 사용 예 : 비동기 함수에서 반환 할 수
function logger (context) {
console.log(context);
}
function onSuccessfulValidation (context) {
// Handle successful validation.
// context contains {id, content, success}
}
function onFailedValidation (context) {
// Handle failed validation.
// context contains {id, success}
}
some_func_validate(3).then (
[logger, onSuccessfulValidation],
[logger, onFailedValidation]
);
여기에 코드를 사용하는 예입니다. 'variable_to_return'에 의존하는 모든 코드를 성공 콜백으로 이동하십시오. –
'$ .ajax'은 (는) 비동기입니다. 자신 만의 연구를 해보세요. – zerkms