有什么方法可以从 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 回调中解决或拒绝该对象,但感觉我应该能够在没有额外的 Defered 包装器的情况下做到这一点。