我希望能够做到这样的事情:
$.ajax({...})
.whenValid(doSomething);
whenValid基本上是一个有条件地调用另一个函数的函数
whenValid: function(action) {
return this.done(function(data) {
if (!data.errors) action(data);
});
}
我需要将它作为jQuery的延迟对象的实例方法,jQuery.ajax返回。
答案 0 :(得分:0)
是的,jQuery.ajax()
或jQuery.Deferred
可以延期。虽然可以使用.then()
显示预期结果,但您可以返回jQuery.Deferred()
来链接.then()
,.done()
,.fail()
或{{1}在其中一个.always()
完成事件或回调中。
答案 1 :(得分:0)
因此jQuery.ajax返回$ .Deferred()对象的超集,而不是对象本身。
这将覆盖jQuery.ajax方法并修改从原始jQuery.ajax函数返回的结果:
jQuery.ajax = (function ($ajax) {
var newAjax = function (url, settings) {
var ajax = $ajax(url, settings);
ajax.whenValid = function (callback) {
return this.done(function (data) {
if (!data.errors) callback(data);
});
};
return ajax;
};
return newAjax;
}(jQuery.ajax));