У меня настроен некоторый код, и я хотел бы получить очень простой API для запросов ajax.
Итак, я хотел бы просто использовать deferred, чтобы вернуть успех.
var factory = function(dataParams) {
return $.ajax({
type : "POST",
dataType : "json",
url : "http://example.com/whatever",
data : dataParams,
beforeSend : function(jqXHR, settings){/*... something here ...*/},
error : function(jqXHR, textStatus, errorThrown){/*... something here ...*/},
complete : function(jqXHR, textStatus) {/*... something here ...*/}
});
Что будет вызвано чем-то вроде
var dataTools = {
"foo" : function(){
factory({"One": 1}).success(function(jqXHR){
//Do something to jqXHR
//Return something to the "upper most" calling... how?
})
}
"bar" : function(){
factory({"Two": 2}).success(function(jqXHR){
//Return jqXHR to the "upper most" calling... how?
})
}
};
Так, чтобы я мог использовать его таким образом:
$.each(dataTools.foo(), function(k,v){
console.log(v);
});
По существу, объект dataTools.foo
возвращает значение из успеха или должен возвращать пустой набор в области сбоя или что-то, что пропускает эту ветвь кода.
Я пытался использовать $.when().then()
, но я не могу понять, как вписать это в то, что я описал здесь.