热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ajax耽误插件

近来碰到需要做ajax耽误的需求,上一段代码记录下:varXHRServicefunction(options){this.optionsoptions;this.reqTimer

近来碰到需要做ajax耽误的需求,上一段代码记录下:

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!');
});

推荐阅读
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有