考虑一个可能执行或不执行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
对象的默认状态?在这种情况下,设置为已解析状态,因此即使从未尝试过AJAX请求,也会立即触发done()
回调。