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]
);