ajax请求为什么要refactor一个统一的方法?
我们开发一个project,必然要用到很多ajax异步调用。一般比较有经验的架构都会重构一个ajax方法,然后所有的ajax调用都统一用这个方法,比如我经历的一个项目,他的重构是这么做的:
//refactor
var promise = function(options, query){
return $.ajax({
cache: options.cache,
url: options.url,
dataType: options.dataType,
method: options.type,
data: query
})
.done(function(data){
...
...
})
.fail(function(error){
...
...
})
.always(function(response){
...
...
});
}
//call
promise({
url: xxxxxx,
done: function(res){
xxxxxx
}
});
我在之前的一篇文章中也说过一个refactor的方法,他用到了jquery的defer对象,ES6--Promise对象
这种refactor是非常必要的,比如团队协作的时候,不同人写了很多ajax,这时候如果要统一在ajax的时候加个loader或者计个时什么的,如果没有统一的方法,就显的很麻烦了,当然如果你用jquery也不是没有方法。这时候有一个统一的调用接口就显得特别的方便。
下面我再说下如果你实在没有写这个接口,也总不至于一个一个ajax去添加,jquery提供了相应的方法,如下:
$.ajaxSetup({
beforeSend:function(XMLHttpRequest){
...
},
complete:function(XMLHttpRequest,textStatus){
...
}
});
这个方法也是可行的,你可以写到你的global中去。