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

来源:互联网 发布:金角大王异步网络框架 编辑:程序博客网 时间:2024/05/21 09:17

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
原创粉丝点击