jQuery deferred的实践,ajax请求增加缓存处理

ajax是一个异步操作,我们这使用ajax请求接口的时候,往往都是callback来实现回调。

localStorage是一个同步操作,如果有本地缓存的话,往往都是直接执行返回。

如果我们需要对外提供统一的方法,实现ajax操作,且能处理ajax的缓存,那么jQuery的deferred对象自然是不二选择。defferd对象。参考。http://blog.csdn.net/lqyygyss/article/details/51150138
代码如下:

var deferredCache = function(data){
      var defer = jQuery.Deferred();
      defer.resolve(cacheData);
     return jQuery.when(defer.promise());
}
var getDataByAjax = function (params) {
    //do something
       var xhr = jQuery.ajax(params);
     return xhr;
};
exports.getData= function(params){
    //读取本地缓存数据
    var data = localStore.getLocalDataByKey(params.key);
    //如果存在在使用deferred对象异步延迟,否则直接请求ajax获取数据,成功则保存到本地。
    var def = data ? deferredCache(data) : getDataByAjax(params);
    def.done(function(datas){
            localStore.setLocalDataByKey(params.key,datas);
    });
    return def;
}

getData返回的是一个deferred对象或者ajax.

var _params ={
     url:,
     type:,
     done:,
     fail:,
     always:,
}

对外提供的方法就是getData,使用者只要知道是请求ajax就OK了。只不过使用done,fail,always,而不是使用success,error。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值