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])

这个函数应该返回承诺。如果在 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);
}

问题是:我应该如何计算存储密钥?(即我应该用什么代替什么???)

4

0 回答 0