导致“Uncaught RangeError:超出最大调用堆栈大小”的原因以及如何删除它?

问题描述 投票:2回答:1

我正在使用来自ajax的数据创建一个crossfilter维度。创建维度变量的正确方法是什么?

    var url = "http://" + window.location.host + "/twitter-data"; 

    $.ajax({
        url: url,
        async: false,
        success: function(data) {
                makeGraphs(data);
        }

    });

    function makeGraphs(records){
        var dateFormat = d3.time.format("%Y-%m-%dT%H:%M:%S+%H:%M");

        var data = records.map(obj => {

            var res = dateFormat.parse(obj._source.published)
            return res;
        });

        console.log(data[0]);

        //Crossfilter
        var ndx = crossfilter(data);
        var all = ndx.groupAll


        //Dimensions
        var hashtagDim = ndx.dimension( function (d) {return d.hashtags; }, true);

'

控制台上的错误如下所示:

未捕获RangeError:超出最大调用堆栈大小

在quicksort(crossfilter.js:172)

在sort(crossfilter.js:169)

它继续这样。

代码段的最后一行产生错误。我已经看到解决方案说它是一个递归函数调用,但我不知道我需要更改我的代码以避免此错误。

crossfilter
1个回答
2
投票

您确定数据元素上有'hashtag'属性吗?

通常,当我使用crossfilter遇到相同的错误时,一直是因为我一直试图使用不存在的属性来注册维度(即值函数返回undefined)。对属性使用错误的大小写也会导致undefined返回值,因为属性区分大小写。

通常,维度(或组)值函数可能永远不会返回NaNundefinednullNatural ordering of dimension and group values

可能的根本原因是,如果您在AJAX请求完成之前启动了交叉过滤器。但这只是猜测,因为我对你的代码知之甚少。

© www.soinside.com 2019 - 2024. All rights reserved.