javascript - 这可以处理 100.000 个值吗?

标签 javascript teechart

我在使用 Teechart 的 JavaScript 时遇到问题。 我想在我们的主页中使用 Teechart 来显示大约 500.000 个值的折线图。

我的代码最多可处理 100.000 个值,此后会出现错误“超出最大调用堆栈大小”

teechart.js:72 Uncaught RangeError: Maximum call stack size exceeded
at C (teechart.js:72)
at Tee.Line.Tee.Series.minYValue (teechart.js:130)
at teechart.js:76
at I.eachAxis (teechart.js:134)
at I.minYValue (teechart.js:76)
at x.checkMinMax (teechart.js:39)
at x.adjustRect (teechart.js:113)
at Q.each (teechart.js:79)
at Tee.Chart.draw (teechart.js:150)
at k (teechart-extras.js:24)

我是 Javascript 的初学者,这是我的第一次测试,但我找不到问题。 我正在使用 Teechart VCL,显示这么多值没有问题。

TeeChart for Javascript 可以处理这么多值吗?

function draw() {
  Chart1=new Tee.Chart("canvas");
  Series=new Tee.Line(Chart1);
  Chart1.addSeries(Series);

  Series.addRandom(200000);

  Chart1.axes.left.title.text="[hPa]";
  Chart1.axes.bottom.title.text="Date/Time";
  Chart1.axes.bottom.labels.dateFormat = "dd.mm.yy hh:mm";

  Chart1.series.items[0].marks.drawEvery=120;
  Chart1.title.visible = false;
  Chart1.legend.visible = false;
  changeTheme(Chart1, "minimal");
  Chart1.draw();
}

最佳答案

我对teechart一无所知,但错误消息实际上相当清楚。

每种语言都使用“调用堆栈”来管理对函数的调用。每次调用函数时,都必须保存当前的执行环境(所有局部变量、接下来要执行哪一行等),并且必须为被调用函数设置一个新的执行环境(其参数、局部变量等)。如果被调用的函数随后调用另一个函数,则也需要保存其当前的执行环境。

为了管理保存所有这些信息,我们使用堆栈。当您调用电话时,您的信息将保存到堆栈中。当该函数调用另一个函数时,它会被插入堆栈。当它解析执行时,它会在您之前被拉出,当您的函数完成执行时,您会被从堆栈中拉出。

现在解决你的问题。每次我们将新的函数调用压入堆栈时,都会占用一定量的内存。小,但仍然存在。但可供调用堆栈使用的内存量是有限的。因此,如果一个函数调用一个函数调用一个函数......并且我们在函数调用中嵌套得太深,那么调用堆栈就会耗尽内存。一旦发生这种情况,如果您尝试再次调用,计算机在物理上无法正确执行该命令,因此会发生此错误。

<小时/>

那么我们应该怎么做呢?

  1. 代码中的某个地方有递归函数调用,递归得太深。

  2. 或者 teechart 中的某个地方有一个使用递归的函数,并且您传递给它的某些值会导致它递归得太深。

“问题”函数可能如下所示:

function recurse_x_times(x) {
  if (x < 1) {
    return;
  }
  // do some other stuff
  return recurse_x_times(x-1);
}

关于javascript - 这可以处理 100.000 个值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48344739/

相关文章:

Delphi TeeChart - 打印预览和保存对话框

php - jQuery 选择不起作用

javascript - Jquery Sortable,通过拖出删除当前Item

使用原型(prototype)时 JavaScript 对象会被覆盖

.net - 如何使用 ClickOnce 安装 COM

delphi - 减少绘制的TChart点数

php - Ajax/JQuery 数据库访问/互斥

javascript - 向下滚动页面时网页卡在 jquery slider 上

delphi - 在运行时更改图表栏偏移量 (OffsetPercent)

mono - 圆形仪表渐变 - TeeChart - MonoAndroid