次のようなサーバーに接続する一連の約束があります。
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])
この関数は promise を返す必要があります。「getSomething」の結果がキャッシュで見つかった場合、promise はすぐに解決されます。それ以外の場合は、元の「getSomething」の promise が返されます。
私は関数を書き始めました:
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);
}
問題は、ストレージ キーをどのように計算すればよいかということです。(つまり、WHAT の代わりに何を入れるべきですか???)