我有一组像这样连接到服务器的承诺:
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])
这个函数应该返回承诺。如果在 cashe 中找到 'getSomething' 结果,则该承诺将立即解决,否则,将返回原始 '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);
}
问题是:我应该如何计算存储密钥?(即我应该用什么代替什么???)