当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

ajax延迟插件

作者:小梦 来源: 网络 时间: 2024-03-15 阅读:

最近遇到需要做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!');    });

热点阅读

网友最爱