var XHRService = function(options) { this.options = options; this.reqTimer = null; }; XHRService.prototype = { constructor: XHRService,req: function(options) { var that = this,defer = $.Deferred(); clearTimeout(this.reqTimer); this.reqTimer = setTimeout(function() { that._req(options,defer); },this.options.reqDelay); return defer.promise(); },_req: function(options,defer) { var that = this; if (this.xhr) { this.xhr.abort(); } if (typeof this.options.before === 'function') { clearTimeout(this.loadingTimer); this.loadingTimer = setTimeout(function() { that.options.before(); },this.options.loadingDelay); } this.xhr = $.ajax(options).done(function(data) { defer.resolve(data); }) .always(function(res,status,xhrObj) { clearTimeout(that.loadingTimer); if (typeof that.options.after === 'function') { that.options.after(); } if (xhrObj === that.xhr) { that.xhr = null; } }); } }; var xhr = new XHRService({ reqDelay: 10,loadingDelay: 10,before: function() { console.log('show loading...');//显示loadingbar },after: function() { console.log('hide loading...');//隐藏loadingbar } }); xhr.req({ url: url,dataType: 'json' }).done(function(data) { console.log('done!'); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。