我正在为我的雇主测试一个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对象的集合.重构代码以对锥体上的整个集合使用$.map后,不再出现堆栈溢出问题.