1

次のようなサーバーに接続する一連の約束があります。

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 の代わりに何を入れるべきですか???)

4

0 に答える 0