javascript - 将所有加载的数据存储到一个 Javascript 对象中

标签 javascript jquery ajax object

我只需要一些建议,看看这是否明智。我主要通过 AJAX 请求加载我的站点数据。为了节省加载时间和服务器调用,我将所有加载到全局对象的数据保存起来,并在用户再次选择页面时回收这些数据。

我想知道将整个站点缓存到一个对象上是否明智,例如:

var page = ['level 1','level 2','level 3','level 4'];
var mysiteobj = [];
if (page[0] == 'level 1')
   if (!mysiteobj['level 1'])
      $.ajax(/*load data*/).done(function(data){ mysiteobj['level 1'] = data; /*display data*/ });
   else /*display mysiteobj['level 1']*/
   if (page[1] == 'level 2')
      if (!mysiteobj['level 1']['level 2'])
         $.ajax(/*load data*/).done(function(data){ mysiteobj['level 1']['level 2'] = data; /*display data*/ });
      else /*display mysiteobj['level 1']['level 2']*/
 ...etc

……等等。为了澄清相当奇怪的符号,“级别 1”是用户可能查找的所有地理区域,“级别 2”是用户可能查找的地理区域中的所有部门,“级别 3”是部门中的类别在 geo 中,并说“级别 4”将是在 geo 中部门的类别中列出的产品或条目。

现在,我的方法是,我有一个包含所有地理区域的对象,每次加载新的地理区域时都会用新的部门列表覆盖第二个对象,第三个对象保存我的类别,第四个保存我的列表/产品.

如果有道理,请指教。我猜想简化的问题是,在对象变得笨重并使浏览器陷入困境之前,您可以将其制作成多大?

最佳答案

如果还没有加载,为什么不只根据需要加载数据。

例如,您可以加载级别 1。

然后,当用户选择第 2 级时,加载它(如果尚未存在)并继续。

因此,您可以保留已加载的内容,但只要通知他们您正在检索数据,如果这需要时间,否则人们可能会理解您正在加载它。

就个人而言,我会向用户显示有一个加载请求,这样他们就知道发生了什么。

IMO,预加载整个网站是一种浪费。

关于javascript - 将所有加载的数据存储到一个 Javascript 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003767/

相关文章:

javascript - 在 HotTowel SPA 中使用 Durandal 定义模块的 jQuery 依赖项

javascript - 某些功能在 .append 之后不起作用

javascript - 当 AJAX 返回 null 时向输入添加信息

javascript - 如何将此 JSON 数据加载到 Angular2

javascript - 如何从 React 中的购物车状态中删除未选中的项目

javascript - Uncaught Error : Element type is invalid: expected a string

javascript - 在 VSCode 扩展中使用 JavaScript DOM

javascript - 表格行点击使用变量

javascript - 使用 For 循环初始化 JQuery Accordion

javascript - 使用 AJAX、jQuery 和 PHP 接收响应时出现问题