jquery ajax:何时使用回调挂钩vs设置功能?

Zac*_*bey 5 jquery

据我所知,从文档中可以看出,有两种不同的方式可以处理来自$.ajax()呼叫的响应.

1)将函数传入$.ajax()设置对象:

$.ajax({
    success: function(){ ... },
    error: function(){ ... }
});
Run Code Online (Sandbox Code Playgroud)

2)作为可链接的"回调挂钩"

$.ajax({...})
    .done(function(){ ... })
    .fail(function(){ ... })
Run Code Online (Sandbox Code Playgroud)

这两种方法之间的重要区别是什么?何时我应该选择另一种方法?

Guf*_*ffa 1

如果您直接在调用中附加该函数,则用法没有太大区别。当您想在其他地方使用回调函数时,就会出现差异。

将回调函数发送到方法中:

function callForMe(callback) {
  $.ajax({
    url: '...',
    success: callback
  });
}

callForMe(function(data){
  // handle the response
});
Run Code Online (Sandbox Code Playgroud)

从方法返回承诺,稍后等待响应:

function callFormMe() {
  return $.ajax({
    url: '...'
  });
}

var promise = callForMe();
// later on:
promise.done(function(data){
  // handle the response
});
Run Code Online (Sandbox Code Playgroud)