天行健, 君子以自强不息
Sunny's Blog
Title

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中去。

地势坤,君子以厚德载物