2012-08-02 57 views
4

我正在为我的雇主测试一个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会抛出一个RangeError:超出最大调用堆栈大小。如果我减少返回的数据量,它就可以正常工作。有趣的是,FireFox和IE9会处理更大的数据集,但我认为Chrome的堆栈大小限制比这两种浏览器中的任何一个都大,所以我预计它们都会失败。有其他人遇到过这个问题吗?有没有解决方法?或者我将不得不更新我的代码来限制返回的数据量以避免此错误?

回答

2

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

相关问题