1

起初,我把我所有的魔法都作为成功函数的调用,但我刚刚意识到可以在调用之后附加done(...)(我相信也有一个准备好的)。

进行商业魔术的推荐地点在哪里?

$.ajax({
  url: "http://...",
  dataType: 'jsonp',
  success: function () { doMagic(1); },
  ready: function () { doMagic(2); },
  ...
}).done(function () { doMagic(3); });
4

1 回答 1

3

我不知道是否有“正确的方法”,但我所看到的大部分内容都建议使用.done(...),因为它更干净、更易于阅读。原因是因为它把success函数从代码块的中间取出来进行实际的 AJAX 调用。

换句话说,它更容易阅读:

$.ajax({
  url: "http://...",
  dataType: 'jsonp',
  ...
}).done(function(data){
    // SOME VERY LONG FUNCTION HERE
});

而不是阅读这个:

$.ajax({
  url: "http://...",
  dataType: 'jsonp',
  success: function(data){
    // SOME VERY LONG FUNCTION HERE
  },
  ...
});

也就是说,如果要调用的函数实际上做了任何重要的事情(即不仅仅是将结果转储到某个 HTML 元素中),我会使用一个命名函数并从这里引用它,在这种情况下,我认为它会更容易读这个:

function OnSuccess(data) {
    // SOME VERY LONG FUNCTION HERE
}

$.ajax({
  url: "http://...",
  dataType: 'jsonp',
  success: OnSuccess,
  ...
});

而不是阅读这个:

$.ajax({
  url: "http://...",
  dataType: 'jsonp',
  ...
}).done(OnSuccess);

(实际上,最好为函数(以及所有“业务逻辑”)命名,例如Business.Model.OnSuccess,但我忽略了它,因为它并不是答案的一部分)

于 2013-06-21T20:27:45.633 回答