【问题标题】:Chrome RangeError: Maximum call stack size exceeded when using jQuery $.mapChrome RangeError:使用 jQuery $.map 时超出了最大调用堆栈大小
【发布时间】:2012-07-31 18:50:40
【问题描述】:

我正在为我的雇主测试一个 Web 应用程序,其中涉及从服务器检索大量数据。使用$.ajax 函数将数据作为JSON 对象返回,其中包含大量子对象,我使用jQuery 的$.map 函数将其转换为数组,如下所示

data_points = $.map(result.data.LotsOfIt, function(value, ndx){
              return value;
          }); //Throws Maximum call stack size exceeded with large data set.

这似乎耗尽了 Chrome 的堆栈大小限制,每次我运行此函数时,Chrome 都会抛出 RangeError: Maximum call stack size exceeded。如果我减少返回的数据量,它工作得很好。有趣的是,FireFox 和 IE9 可以很好地处理更大的数据集,但我认为 Chrome 的堆栈大小限制比这两种浏览器都大,所以我预计它们也会失败。有没有其他人遇到过这个问题?有解决方法吗?或者我是否必须更新我的代码以限制返回的数据量以避免此错误?

【问题讨论】:

    标签: javascript jquery google-chrome web-applications browser


    【解决方案1】:

    好的,所以在阅读了一些内容之后,我怀疑这个问题与 $.map 实现中的递归调用有关,导致 Chrome 浏览器堆栈溢出。我不得不重新编写代码以手动以非递归方式迭代返回的 JSON 对象的集合。在将代码重构为对锥体处的整个集合使用 $.map 后,堆栈溢出问题不再出现。

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 2018-05-29
      • 2020-11-19
      • 2015-03-15
      • 1970-01-01
      • 2018-03-18
      • 2017-04-12
      相关资源
      最近更新 更多