javascript - Chrome RangeError : Maximum call stack size exceeded when using jQuery $. map

标签 javascript jquery google-chrome web-applications browser

我正在为我的雇主测试一个 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 的堆栈大小限制比这两个浏览器中的任何一个都大,所以我预计它们也会失败。还有其他人遇到过这个问题吗?有解决方法吗?或者我是否必须更新我的代码以限制返回的数据量以避免此错误?

最佳答案

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

关于javascript - Chrome RangeError : Maximum call stack size exceeded when using jQuery $. map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783575/

相关文章:

javascript - 使用javascript更改表单字段值

javascript - Fido U2F 客户端 JavaScript 源代码

javascript - 从 JSON 文件加载变量到 LESS CSS 预处理器

javascript - 内容 slider 停止并开始 Accordion

javascript - 仅当数据来自循环 GET 请求时,JSON stringify 才会失败

javascript - 我的代码在 <script> 标记中工作,但在外部文件中不起作用

jquery - 如何在特定背景图片 url 上传之前预览多张图片

CSS 固定背景附件在谷歌浏览器中闪烁

javascript - 需要从 Chrome 扩展程序的页面内直接链接到 Chrome 内部页面

javascript - 可以强制 chrome 按存储顺序迭代 "string numeric"键