我不知道是否有“正确的方法”,但我所看到的大部分内容都建议使用.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
,但我忽略了它,因为它并不是答案的一部分)