Javascript 美元.ajax调用后业务逻辑的建议位置
起初,我把我所有的魔法都放在了一个来自success函数的调用中,但我刚刚意识到可以在调用之后附加done(…)(我相信还有一个ready) 建议在哪里进行商业魔术Javascript 美元.ajax调用后业务逻辑的建议位置,javascript,jquery,ajax,coding-style,jsonp,Javascript,Jquery,Ajax,Coding Style,Jsonp,起初,我把我所有的魔法都放在了一个来自success函数的调用中,但我刚刚意识到可以在调用之后附加done(…)(我相信还有一个ready) 建议在哪里进行商业魔术 $.ajax({ url: "http://...", dataType: 'jsonp', success: function () { doMagic(1); }, ready: function () { doMagic(2); }, ... }).done(function () { doMagic(3)
$.ajax({
url: "http://...",
dataType: 'jsonp',
success: function () { doMagic(1); },
ready: function () { doMagic(2); },
...
}).done(function () { doMagic(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
},
...
});
function OnSuccess(data) {
// SOME VERY LONG FUNCTION HERE
}
$.ajax({
url: "http://...",
dataType: 'jsonp',
success: OnSuccess,
...
});
$.ajax({
url: "http://...",
dataType: 'jsonp',
...
}).done(OnSuccess);
而不是阅读以下内容:
$.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
},
...
});
function OnSuccess(data) {
// SOME VERY LONG FUNCTION HERE
}
$.ajax({
url: "http://...",
dataType: 'jsonp',
success: OnSuccess,
...
});
$.ajax({
url: "http://...",
dataType: 'jsonp',
...
}).done(OnSuccess);
也就是说,如果要调用的函数实际上做了任何重要的事情(即,不仅仅是将结果转储到某个HTML元素中),我将使用一个命名函数并从这里引用它,在这种情况下,我认为阅读以下内容会更容易:
$.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
},
...
});
function OnSuccess(data) {
// SOME VERY LONG FUNCTION HERE
}
$.ajax({
url: "http://...",
dataType: 'jsonp',
success: OnSuccess,
...
});
$.ajax({
url: "http://...",
dataType: 'jsonp',
...
}).done(OnSuccess);
而不是阅读以下内容:
$.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
},
...
});
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
,但我忽略了这一点,因为这并不是答案的一部分)它应该在done()
中。我不知道你从哪里准备好了
,它不在jQuery文档中。而success
选项与此处的.done()
相同。您为成功
提供的任何内容都只用于在内部调用.done()
所使用的内部延迟对象,但我忽略了这一点,因为它实际上不是答案的一部分
-是的,但要指出这是一件好事。你把它和商业逻辑联系起来,所以说一个很好的答案也不错。而且,尽管离题,最后的评论应该尽可能多地发表。我自己忘记(或者太懒了)把东西放在名称空间里,因为“这只是一个小测试”。羞愧地低头。。。