$ .ajax调用后的业务逻辑的推荐位置

时间:2013-06-21 20:01:37

标签: javascript jquery ajax coding-style jsonp

起初,我将所有魔法都作为来自 success 函数的调用,但我刚刚意识到可以在调用后附加 done(...)(和我相信还有准备

推荐商业魔术的位置在哪里?

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

1 个答案:

答案 0 :(得分: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,但我把它留下了,因为它不是真的部分答案)