我知道如何使用这样的jquery ajax。换句话说,我理解.fail
在失败时被调用等。
var jqxhr = $.ajax( "example.php" )
.done(function() {
alert( "success" );
})
.fail(function() {
alert( "error" );
})
.always(function() {
alert( "complete" );
});
我也理解$.ajax("example.php")
返回一个表示DOM的一部分的对象,并且有一些匿名函数作为参数传递给done / fail / always。到现在为止还挺好。我也得到方法链(或“级联”):对象上的函数调用如何返回对象,因此您可以使用链中的下一个方法再次调用该对象。
但是,我试图理解jquery如何“知道”从上面链中调用哪些方法。它不像完成返回然后失败(链中的下一个方法)被调用。那么这种语法会发生什么?它是如何在引擎盖下工作的?
答案 0 :(得分:5)
实际上,$.ajax()
不返回表示DOM的一部分的对象,而是返回promise
。
您可以阅读有关承诺here的更多信息。
答案 1 :(得分:2)
来自https://api.jquery.com/jQuery.ajax/
的引用了解详情jQuery 1.5中$ .ajax()返回的jqXHR对象实现了 Promise接口,为它们提供所有属性,方法和 Promise的行为(有关更多信息,请参阅Deferred对象)。 这些方法采用一个或多个函数参数 $ .ajax()请求终止。这允许您分配多个 单个请求上的回调,甚至在回调之后分配回调 请求可能已经完成。 (如果请求已经完成,那么 立即触发回调。)jqXHR的可用Promise方法 对象包括:...