我的应用程序是使用django框架和jQuery开发的。运行应用程序一段时间后它始终没有响应或“Aw,Snap!”在意外时间内使用Chrome。
我首先想到的问题是每2秒运行一次javascript并加载一些值。我有几个页面运行这种脚本。脚本是这样的:
$(document).ready(function(){
$(window).load(function loadMap(){
var mappos = $("#mappos").val();
var pcode = $("#pcode").val();
var width = $("#width").val();
var loss = $("#loss").val();
var lossarr = $("#lossarr").val();
var spcode = $("#spcode").val();
var swidth = $("#swidth").val();
var cpcode = $('#minclamp', top.document).contents().find('#cpcode').val();
var cwidth = $('#minclamp', top.document).contents().find('#cwidth').val();
var lane = $('#minclamp', top.document).contents().find('#lane').val();
var position = $('#minclamp', top.document).contents().find('#position').val();
var atlane = $('#minclamp', top.document).contents().find('#atlane').val();
var atposition = $('#minclamp', top.document).contents().find('#atposition').val();
var clamping = $("#clamping").val();
var changed = $("#changed").val();
var realtag = $('#minclamp', top.document).contents().find('#realtag').val()
$("#inventory").load(inventory_url+"?pcode="+pcode+"&width="+width+"&loss="+loss+"&lossarr="+lossarr+"&spcode="+spcode+"&swidth="+swidth+"&cpcode="+cpcode+"&cwidth="+cwidth+"&lane="+lane+"&position="+position+"&atlane="+atlane+"&atposition="+atposition+"&clamping="+clamping+"&changed="+changed+"&realtag="+realtag+"&mappos="+mappos);
}
setTimeout(loadMap, 2000);
});
});
如果我是对的,是否有其他代码执行相同但不会导致不响应这样的事件。或者有什么技术可以改善这个吗?
如果还有其他问题需要考虑,请建议我。谢谢。
答案 0 :(得分:0)
尝试将settimeout置于loadMap函数中......完成所有工作后...并使用$(document).ready函数
$(document).ready(function ()
{
var loadMap = function()
{
var mappos = $("#mappos").val();
var pcode = $("#pcode").val();
var width = $("#width").val();
var loss = $("#loss").val();
var lossarr = $("#lossarr").val();
var spcode = $("#spcode").val();
var swidth = $("#swidth").val();
var cpcode = $('#minclamp', top.document).contents().find('#cpcode').val();
var cwidth = $('#minclamp', top.document).contents().find('#cwidth').val();
var lane = $('#minclamp', top.document).contents().find('#lane').val();
var position = $('#minclamp', top.document).contents().find('#position').val();
var atlane = $('#minclamp', top.document).contents().find('#atlane').val();
var atposition = $('#minclamp', top.document).contents().find('#atposition').val();
var clamping = $("#clamping").val();
var changed = $("#changed").val();
var realtag = $('#minclamp', top.document).contents().find('#realtag').val()
$("#inventory").load(inventory_url+"?pcode="+pcode+"&width="+width+"&loss="+loss+"&lossarr="+lossarr+"&spcode="+spcode+"&swidth="+swidth+"&cpcode="+cpcode+"&cwidth="+cwidth+"&lane="+lane+"&position="+position+"&atlane="+atlane+"&atposition="+atposition+"&clamping="+clamping+"&changed="+changed+"&realtag="+realtag+"&mappos="+mappos, function()
{
// set the timer here in the completeCallback of your 'load' function.
setTimeout(function()
{
loadMap();
}, 2000);
}));
};
loadMap();// call the first load map;
});
答案 1 :(得分:-1)
您是否尝试过使用单独的线程?
编辑: 如果你知道你在找什么:http://www.websiteoptimization.com/speed/10/ 非常好