我已连接到服务器的这样一个承诺:
function getSomething(data, moreData, evenMoreData){
var dfd = new jQuery.Deferred();
Dajaxice.myProject.getSomethong(function(data){
dfd.resolve(data.result);
}, {'data': data, 'moreData': moreData, 'evenMoreData':evenMoreData});
return dfd.promise();
}
我想定义代理函数调用缓存中,这样的工作:
cache(getSomething, [data, moreData, evenMoreData])
该函数返回的承诺。 如果“getSomething”结果在cashe发现,否则,原来的“getSomething”承诺将返回承诺将立即解决。
我开始写一个函数:
function cache(funct, args){
if(Modernizr.sessionstorage){
var dfd = new jQuery.Deferred();
var hash = SHA256(WHAT?????);
var cache = sessionStorage[hash];
if(cache)
dfd.resolve(cache);
else{
funct.apply(null, args).then(function(result){
sessionStorage[hash] = result;
dfd.resolve(result);
});
}
return dfd.promise();
}
return funct.apply(null, args);
}
现在的问题是:我应该怎么计算存储密钥? (即我应该到位的什么???)