我有一个函数可以调用获取Json响应并在Google Plots中绘制数据......我每90秒执行一次此功能,因此它会使用最新数据更新我的图表....
这很好但无论什么时候处理它似乎锁定浏览器短暂几秒钟(甚至装载机冻结)我没关系,如果图形部分冻结但我不希望装载机或其他项目冻结我希望UI在图表更新时仍能正常运行。
有人可以帮助我,也许我应该更改$ .ajax
以下是代码:
function UpdateCharts() {
clearInterval(timerId);
BuildLineChart('power-chart', $('#datePower').val(), '1,28,32');
BuildLineChart('voltagecurrent-chart', currentDate, '13,15,17,5,7,9');
BuildLineChart('phasekw-chart', currentDate, '2,3,4');
BuildLineChart('phasevoltage-chart', currentDate, '13,15,17');
BuildLineChart('phasecurrent-chart', currentDate, '5,7,9,11');
timerId = setInterval(UpdateCharts, 90000);
}
// document ready function
$(document).ready(function() {
setTimeout(UpdateCharts, 5000);
});
构建折线图然后执行此操作:
function onDataReceived(seriesData) {
var p = $.plot(placeholder, seriesData.seriesData, options);
}
$.ajax({
url: '/Charts/LineChart?SeriesToGraph=' + dataPoints + '&DatePull=' + chartDate,
method: 'GET',
async: false,
cache: true,
dataType: 'json',
beforeSend: function() {
$("." + placeHold + "-loader").html('<img src="/Assets/images/loaders/circular/066.gif" />');
},
complete: function() {
$("." + placeHold + "-loader").html('');
},
success: onDataReceived
});
答案 0 :(得分:9)
async: false会导致浏览器在继续运行之前等待请求完成。将其更改为async:true,它不会锁定浏览器。
答案 1 :(得分:5)
您已设置async: false
。如果将其设置为async: true
,那么您的AJAX请求将异步发生,不应冻结您的浏览器。
答案 2 :(得分:0)