考虑一个可能执行也可能不执行 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 请求,也会立即触发回调。