大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天就跟大家聊聊有关怎么在AngularJS对$http.post()函数进行封装,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
创新互联是一家集网站建设,冷水江企业网站建设,冷水江品牌网站建设,网站定制,冷水江网站建设报价,网络营销,网络优化,冷水江网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
service('myHttpService', ['$http', function ($http) { var myHttpPost = function (url, data, successFn, errorFn) { } return { myHttp: function (url, data, successFn, errorFn) { return myHttpPost(url, data, successFn, errorFn); } } }]);
如上,我会return内部定义的方法,这个方法允许使用者定义successFn和errorFn,即相应成功和失败的回调,如此一来使用者大可放心的预先编写数据的处理逻辑,而无需关心其他细节。
另外,我允许使用者拿到更加灵活的post(),那么我是这样实现的:
var httpPromise = $http.post(url, data, {timeout: 30000}); if (!angular.isDefined(successFn)) { return httpPromise; }
如果使用者并没有定义成功回调,好吧,这层封装就当是不存在,我会把post()丢出去,由调用者自行处理。而如果调用者想预先定义的话,我应当在封装中处理好他们的逻辑:
return httpPromise.then( function (response) { if (response.status) { return successFn(response); } else { /*其他处理*/ } }, function (error) { if (!angular.isDefined(errorFn)) { /*其他处理*/ } else { return errorFn(error); } }, function () { /*无论何总情况下都应该被执行的逻辑*/ } )
如此对于http.post()的封装基本上就算是完成了。其中有一个地方需要注意,如果我在处理successFn的时候,用了angular.isDefined()判断调用者是否定义了回调,如果没有,我将把处理权利交给调用者,如果已定义我将代为处理。其中then()方法比较有趣,因为http方法返回的是一个promise对象,在响应返回的时候可以通过then()来处理响应,其实完全可以通过promise.success()和promise.error()来处理不同响应状态的回调,但是用then()更好一些,因为它接收到的是完整的响应对象,而success()和error()会对响应对象进行解析,具体的差别读者可以通过console输出来看看。
看完上述内容,你们对怎么在AngularJS对$http.post()函数进行封装有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。