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。