我从c#中获取数据库中的数据,并使用Ajax将其传递给Javascript。我将这些数据存储在数组中。我每隔3秒查询一次数据库。我正在使用此数据来更新我的图表,例如更改轨道的颜色。模拟工作正常,直到30秒,之后我的UI(浏览器)卡住并且没有得到更新。你能告诉我如何让模拟运行而不会卡住吗?
代码:
function getData() {
$(document).ready(function () {
var q = setInterval(getData, 3000);
jQuery.ajax({
type: "POST",
url: "WebForm1.aspx/GetStations", //It calls our web method
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ myArray: dl_id_track }),
dataType: "json",
async: true,
success: function (data) {
if (data != null) {
var len = data.d.length;
for (var i = 0; i < len; i++) {
signo[i] = data.d[i].signo;
status[i] = data.d[i].status;
}
}
simulate();
},
error: function (d) {
}
});
});
}
function simulate() {
for (var i = 0; i < b.length; i++) {
for (var j = 0; j < 1024; j++) {
//track
if (signo[j] == sig_no_track[i]) {
if (status[j] == "1") {
var x1 = parseInt(left_track[i]) + parseInt(x1_track[i]);
var y1 = parseInt(top_track[i]) + parseInt(y1_track[i]);
var x2 = parseInt(left_track[i]) + parseInt(x2_track[i]);
var y2 = parseInt(top_track[i]) + parseInt(y2_track[i]);
var line1 = draw.line([[x1, y1], [x2, y2]]).stroke({ width: 3, color: '#ff0000' });
}
答案 0 :(得分:0)
我只涉足网络开发,所以我不是专家,但是因为没有其他人做出回应而且我有半个想法......
它看起来像我(没有专家),它可能会递归,创建一个无限循环......虽然由于setInterval可能是一个缓慢的循环。如果你搬家我会倾向于看它是否有效:
$(document).ready(function () {
var q = setInterval(getData, 3000);
});
从第一个函数开始,到<script>
块的末尾。要对此进行测试,您需要从});
函数本身丢失相应的getData
。