Chrome RangeError:使用jQuery$.map时超过了最大调用堆栈大小



我正在为我的雇主测试一个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.

这似乎耗尽了Chromes堆栈大小的限制,每次我运行此函数时,Chrome都会抛出RangeError:超过了最大调用堆栈大小。如果我减少返回的数据量,它就可以正常工作。有趣的是,FireFox和IE9会很好地处理更大的数据集,但我认为Chrome的堆栈大小限制比这两种浏览器都大,所以我预计它们也会失败。其他人遇到过这个问题吗?有变通办法吗?还是我必须更新我的代码以限制返回的数据量以避免此错误?

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

相关内容

最新更新