gpt4 book ai didi

javascript - 应用程序性能缓慢

转载 作者:可可西里 更新时间:2023-11-01 14:46:15 26 4
gpt4 key购买 nike

我遇到的问题是应用程序性能非常慢,因为我相信它们是在后台运行的许多图表,换句话说,index.html 中发生了很多事情。

如何才能让一个图表只在用户查看时运行,而让其余的图表保持空闲直到被选中?

我有两个 HTML 文件和五个 JavaScript 文件。

  1. Index.html
  2. NavigationList.html
  3. Diagram1.js
  4. Diagram2.js
  5. Diagram3.js
  6. Diagram4.js
  7. Diagram5.js

这是 index.html,我在 <body> 中包含了 5 个可以查看的图表作为身份证。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="js/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="canvasjs-1.6.2/canvasjs.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css">

<!--Import diagrams-->
<script src="diagram1.js"></script>
<script src="diagram2.js"></script>
<script src="diagram3.js"></script>
<script src="diagram4.js"></script>
<script src="diagram5.js"></script>

<script>
$(function(){
$("#selectTable").load("NavigationList.html"); // Navigation list for diagrams
});
</script>

</head>
<body>
<div id="toolbar"></div>
<div id="diagram1" class="table"></div>
<div id="diagram2" class="table"></div>
<div id="diagram3" class="table"></div>
<div id="diagram4" class="table"></div>
<div id="diagram5" class="table"></div>
<div id="NavigationList"></div>
</body>
</html>

这是NavigationList.html,它由两部分组成。第一部分是负责为用户显示列表的 html 内容。第二部分是处理点击事件的 JQuery。我很怀疑,并且相信问题可能出在 JQuery 代码内部,因为它只通过“display:none/block”单独运行图表,但这个 stidiagrams 仍在后台运行,所以我需要找到一种方法来停止它们同时运行?

</div>
<ul class="list-group">
<!--Set this inside a div to individuelly choose-->
<div id='list_row1' data-row="1"><li class="list-group-item">Exhaust Temperature</li></div>
<div id='list_row2' data-row="2"><li class="list-group-item">Cylinder Pressure</li></div>
<div id='list_row3' data-row="3"><li class="list-group-item">Mass Air Flow</li></div>
<div id='list_row4' data-row="4"><li class="list-group-item">Flywheel</li></div>
<div id='list_row5' data-row="5"><li class="list-group-item">Lambda</li></div>
<div id='list_row6' data-row="6"><li class="list-group-item">Knock</li></div>
<!--<div id='list_row7' data-row="7"><li class="list-group-item">Camshaft position</li></div>-->
<div id='list_row8' data-row="8"><li class="list-group-item">Fluid Temperature</li></div>
<div id='list_row9' data-row="9"><li class="list-group-item">Fluid Pressure</li></div>
<div id='list_row10' data-row="10"><li class="list-group-item">Throttle Position</li></div>
<div id='list_row11' data-row="11"><li class="list-group-item">Manifold Absolute Pressure</li></div>
<div id='list_row12' data-row="12"><li class="list-group-item">Flex Fuel</li></div>
</ul>
</div>

<script>
$(function(){
$('[data-row]').on('click', function() {
var row = $(this).attr('data-row');
$('.active').removeClass('active');
$('#table' + row).addClass('active');
});
});
</script>

这是其他 5 个图表中的 diagram1.js。该文件包含在 index.html 中。这里的代码只负责显示带有一些随机生成数据的图表。但是如果 index.html 中包含 5 个图表,这会降低性能。

$(window).on("load", function() {
var dps = [];
var chart = new CanvasJS.Chart("diagram1",
{
data: [
{
type: "spline",
dataPoints: dps
}]

});
var xVal = 0;
var yVal = 100;
var updateInterval = 1;
var dataLength = 50;

var updateChart = function (count) {
count = count || 1;
// count is number of times loop runs to generate random dataPoints.

for (var j = 0; j < count; j++) {
yVal = yVal + Math.round(5 + Math.random() *(-5-5));
dps.push({
x: xVal,
y: yVal
});
xVal++;
};
if (dps.length > dataLength )
{
dps.shift();
}
chart.render();
};

// generates first set of dataPoints
updateChart(dataLength);

// update chart after specified time.
setInterval(function(){updateChart()}, updateInterval);
});

最佳答案

您必须记住,JavaScript 中的时间是以毫秒而不是秒为单位完成的。

当您调用 var updateInterval = 1; 时,您是在告诉它每 1 毫秒运行一次。

这意味着您要求它每 1 秒运行 1,000 次。这可能是瓶颈。

如果这不是您的意图,您可能想尝试更大的值。 1 秒 = 1000 毫秒。

尝试将您的代码更新为 var updateInterval = 1000;

这是关于 JavaScript 计时事件的附加资源:http://www.w3schools.com/js/js_timing.asp

关于javascript - 应用程序性能缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com