Javascript 使用jQuery、AJAX和HTML5画布的Firefox内存泄漏
我使用jQuery的ajax函数轮询我的服务器,然后使用该数据更新画布。我每秒轮询服务器一次(这不是使用setInterval()完成的,如果您想知道的话……我确实听说这有时是这些问题的根源。画布是动画的,我跟踪帧速率。我使用这些数据来计算一秒钟的时间)。这在Chrome中不是问题,但在Firefox和Maxthon云(以及程度要小得多的Opera)中,性能逐渐变得越来越差。我认为这是ajax调用的问题,我不知道如何解决这个问题。这是我的“callServer()”函数,如果有用的话。谢谢Javascript 使用jQuery、AJAX和HTML5画布的Firefox内存泄漏,javascript,ajax,jquery,memory-leaks,Javascript,Ajax,Jquery,Memory Leaks,我使用jQuery的ajax函数轮询我的服务器,然后使用该数据更新画布。我每秒轮询服务器一次(这不是使用setInterval()完成的,如果您想知道的话……我确实听说这有时是这些问题的根源。画布是动画的,我跟踪帧速率。我使用这些数据来计算一秒钟的时间)。这在Chrome中不是问题,但在Firefox和Maxthon云(以及程度要小得多的Opera)中,性能逐渐变得越来越差。我认为这是ajax调用的问题,我不知道如何解决这个问题。这是我的“callServer()”函数,如果有用的话。谢谢 fu
function callServer(action, json)
{
if(!json)
{
$.ajax({
type: 'POST',
url: 'okey.php.',
data: 'action=' + action,
cache: false,
success: function(data)
{
switch(action)
{
case 'ptv':
tilesValue = data;
break;
case 'ptc':
tilesColor = data;
break;
case 'tid':
//alert(data);
thisPlayerID = data;
break;
case 'pti':
playerTurnInfo = data;
//alert(data);
break;
case 'gs':
gameStatus = data;
break;
case 'steal':
alert(data);
break;
case 'draw':
alert(data);
break;
case 'testing':
alert(data);
break;
}
}
});
}
else if(json)
{
$.ajax({
type: 'POST',
url: 'okey.php.',
data: 'action=' + action,
dataType: 'json',
cache: false,
success: function(data)
{
switch(action)
{
case 'ptv':
tilesValue = data;
break;
case 'ptc':
tilesColor = data;
//alert(tilesColor.length);
break;
case 'pn':
playerNames = data;
break;
case 'pid':
playerIDs = data;
break;
case 'pts':
//alert("excellent");
turnStatuses = data;
break;
case 'ti':
tileIndeces = data;
//alert(tileIndeces.length)
break;
case 'dis':
//alert(parseInt(data[3]));
discarded = data;
//alert(parseInt(discarded[3]));
break;
}
}
});
}
}
更新:引起问题的不是调用的频率。作为建议-您不需要
if(!json)
然后else if(json)
-您只需将else if(json)
设置为else
。另外,您还必须展示如何调用此代码。$.ajax默认执行异步请求。也许firefox无法像Chrome那样快速处理请求,并继续堆积请求。请尝试将请求设置为同步,以查看其效果。顺便说一句,由于您不断地获取数据,您考虑过使用WebSocket吗?我只是说“callServer('steal',false);”此外,我尝试过同步发出请求,但这只会导致更多问题。我考虑过web套接字,但对它们不熟悉。我会尽量减少请求的频率,看看这是否有帮助。关于国际单项体育联合会,这是真的。笨重的编码只是过去有更多选择这一事实的一个痕迹。