AJAX 要求を実行する場合と実行しない場合がある関数を考えてみましょう。$.ajax
インスタンスを返しDeferred
ます。連鎖可能性のために、関数は常にDeferred
インスタンスを返す必要があります。
function doAjaxReq() {
if (conditional_is_true) {
return (
$.ajax(
....
);
);
} else {
// Create a Deferred instance
var deferred = $.Deferred();
// Set the Deferred state to "done"
// ????
return deferred;
}
}
doAjaxReq2
、などの他のいくつかの同様の関数を想像してみてくださいdoAjaxReq3
。これらは次のように連鎖します。
doAjaxReq()
.done(function() {
doAjaxReq2()
.done(function() {
....
})
.fail(ajaxFailHandler)
})
.fail(ajaxFailHandler);
Deferred
新しいオブジェクトのデフォルト状態はどのように設定できますか? この場合、解決済みの状態に設定してdone()
、AJAX 要求が試行されなくてもコールバックがすぐにトリガーされるようにします。