理解jquery的完成/失败/总是在幕后

ber*_*436 1 javascript jquery

我知道如何使用这样的jquery ajax.换句话说,我理解.fail在失败时被调用等.

var jqxhr = $.ajax( "example.php" )
  .done(function() {
    alert( "success" );
  })
  .fail(function() {
    alert( "error" );
  })
  .always(function() {
    alert( "complete" );
  });
Run Code Online (Sandbox Code Playgroud)

我也理解$.ajax("example.php")返回一个表示DOM的一部分的对象,并且有一些匿名函数作为参数传递给done/fail/always.到现在为止还挺好.我也得到方法链(或"级联"):对象上的函数调用如何返回对象,因此您可以使用链中的下一个方法再次调用该对象.

但是,我试图理解jquery如何"知道"从上面链中调用哪些方法.它不像完成返回然后失败(链中的下一个方法)被调用.那么这种语法会发生什么?它是如何在引擎盖下工作的?

met*_*hyl 5

实际上,$.ajax()不返回表示DOM的一部分的对象,而是返回promise.

您可以在此处阅读有关承诺的更多信息.