下面的示例如何清除缓存的不同对象的缓存

米希尔

我正在使用以下代码从共享点检索数据。

RESTQueries.getItemsFromList = function(){
    var deferred = $.Deferred();
    var execute = function(listName,itemId){
        if(typeof(listName)=='undefined' || listName.length==0  ){
            deferred.reject('getItemsFromList - no proper list name');
            return deferred;
        }
        var formatUrl = currentSiteUrl;
        formatUrl = (formatUrl.lastIndexOf('/')==(formatUrl.length-1))?formatUrl:(formatUrl+'/');
        var _url = (typeof(itemId)=='undefined' || itemId=='0')? (formatUrl+"_api/web/lists/getByTitle('"+listName+"')/items") :  (formatUrl+"_api/web/lists/getByTitle('"+listName+"')/items("+itemId+")");
        $.ajax({
            url: _url,
            method:'GET',
            headers:{Accept:'application/json; odata=verbose'},
            success:function(data){
                deferred.resolve(data);
            },
            error:function(err){
                deferred.reject(err.responseJSON.error.message.value);
            }
        });
        return deferred;
    };
    return {
        execute:execute 
    }
}();

要执行此功能,我这样称呼

RESTQueries.getItemsFromList.execute('Pages').done(function(data){
                        console.log(data);
                    });

这给出了没有任何问题的结果。但是问题是,如果我第二次为不同的库调用它,

RESTQueries.getItemsFromList.execute('Students').done(function(data){
                        console.log(data);
                    });

在这种情况下,结果也与第一个请求相同。我认为有些地方在缓存响应。如何清除每个请求的响应?

瓦迪姆·格雷米亚切夫(Vadim Gremyachev)

自实例发生以来

var deferred = $.Deferred();

创建外部execute功能范围。execute函数被调用第二次的done方法获取调用从上一个呼叫的解决递延对象。

解决方案

deferred对象的声明移入execute功能范围

var execute = function(listName,itemId){
   var deferred = $.Deferred();
   //...
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章