【问题标题】:efficient way to store series of values in object?在对象中存储一系列值的有效方法?
【发布时间】:2014-03-14 09:21:40
【问题描述】:

我想列出发送到服务器的每个请求,现在我将每个请求存储在一个带有 id 的对象中。

//code sample that explain my context
function handleReq(){
this.list={};

}

var reqhandler = new handleReq;

//adding each request like this
reqhandler.list[req.id] = req;

问题是我的应用程序发出大量请求(即超过数千个)。如果用户更多地使用应用程序,对象大小将按比例增加。

现在我想知道,这是存储请求的最佳方式吗?

如果不好,请提出一些替代方案?

【问题讨论】:

  • 您需要记录的请求用于什么?调试?

标签: javascript jquery html oop


【解决方案1】:

如果您不需要通过 id 访问请求,为什么不使用数组来代替:

function handleReq(){
    this.list=[];
}

var reqhandler = new handleReq;

reqhandler.list.push(req);

显然,如果您需要将请求保留在当前页面的生命周期之外,您将需要将请求保留到浏览器中的本地存储或某个服务器端存储库,但从您的问题的声音来看,我不认为就是这样。

【讨论】:

    【解决方案2】:

    做这样的事情怎么样:

    var requestLogger =  (function(){
    
      var logArray = [];
      var logObj = {};
      logObj.add = function(obj){
        logArray.push(obj);
      }; 
    
      logObj.get = function(){
        return logArray;
      };
      logObj.getById = function(id){
        //return log elemnt by id from array.
      };
      return logObj;
    
    }());
    
    
    
    requestLogger.add("new request id");
    console.log(requestLogger.get());
    

    http://jsbin.com/gucuzohu/1/

    【讨论】:

    • 感谢您的回答。我实际上是在问它是否跨越数百万个请求会发生什么?
    • 每次你将在 requestLoggger 上使用 add 函数时,数组都会增加它的大小,你将能够添加一个 clean 方法来清除数组中的数据,也许使用超时你需要一个看看这个:developers.google.com/chrome-developer-tools/docs/…
    猜你喜欢
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多