起初,我将所有魔法都作为来自 success 函数的调用,但我刚刚意识到可以在调用后附加 done(...)(和我相信还有准备。
推荐商业魔术的位置在哪里?
$.ajax({
url: "http://...",
dataType: 'jsonp',
success: function () { doMagic(1); },
ready: function () { doMagic(2); },
...
}).done(function () { doMagic(3); });
答案 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
,但我把它留下了,因为它不是真的部分答案)