首页 > 解决方案 > Chrome 中的 JQuery-find-each:未捕获 RangeError:超出最大调用堆栈大小

问题描述

我创建了一个演示:

$.ajax({
    type: "POST",
    url: "bigdata.xml",
    dataType: "xml",
    success: function(result){

        var count = 0;
        var bigdata = $(result).find("root");
        bigdata.find("row").each(function(index, element) {
            count++;
        });
        console.log('(125148 is good, 125149 is not good; count =', count);
    }
});

具有以下内容bigdata.xml

<root>
    <row/>
    <row/>
    .
    .
    .
    <row/>
</root>

<row/>导致问题的数量。如果我有 125148<row/>那就没问题了。但是,如果我有 125149 <row/>,那么我在使用 Chrome 引擎的浏览器中会出现此错误:

Uncaught RangeError: Maximum call stack size exceeded

<row/>在 Firefox 中,即使数量更高,我也没有此错误。这里有什么问题?是 Chrome 的问题吗?还是 jQuery?

在我的应用程序中,我必须显示超过 13 万个项目,所以我必须以某种方式解决这个问题。

编辑:数字 125149 是 Windows10 的限制。现在我在 Linux 下试过了,Chrome 可以在那里处理 125235 行。

标签: javascriptjquerygoogle-chrome

解决方案


也许您不需要遍历该行,因为您只是想获得计数?

如何计算孩子的数量?

试试这样算


推荐阅读