代理缓存承诺(proxy caching promise)

2019-10-17 20:19发布

我已连接到服务器的这样一个承诺:

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);
}

现在的问题是:我应该怎么计算存储密钥? (即我应该到位的什么???)

文章来源: proxy caching promise