ajaxの成功コールバックから内部Deferredオブジェクトにアクセスする方法はありますか?ajax呼び出しを関数に抽象化できるようにしたいのですが、その関数呼び出しを$ .when()でラップし、reject()とresolve()を使用して引数をdone()と次のようなfail()コールバック:
$.when(makeCall())
.done(function(data){
//do something with data
})
.fail(function(message){
//show error
});
function makeCall(){
return $.ajax({
url : //some url,
success : function(data){
if(!data.someCondition){
//i'd like to reject the internal deferred here
//and send it back an error message to my
//the callers fail method like reject('message')
}
else{
//i'd like to resolve the deferred here and
//pass back the data to the callers done
//method like resolve(data)
}
}
});
}
現在、makeCall()を別のDeferredオブジェクトでラップし、ajaxコールバックでそのオブジェクトを解決または拒否していますが、余分なDefferedラッパーがなくてもこれを実行できるはずです。